Main Page | Class Hierarchy | Class List | Directories | File List | Class Members | File Members | Related Pages

Txc11 Class Reference

Inheritance diagram for Txc11:

cSimpleModule cModule cDefaultList cObject cPolymorphic List of all members.

Detailed Description

In this step we keep track of how many messages we send and received, and display it above the icon.


Public Member Functions

 Module_Class_Members (Txc11, cSimpleModule, 0)
virtual TicTocMsg11 * generateMessage ()
virtual void forwardMessage (TicTocMsg11 *msg)
virtual void updateDisplay ()
virtual void initialize ()
virtual void handleMessage (cMessage *msg)

Protected Attributes

long numSent
long numReceived


Member Function Documentation

void Txc11::forwardMessage (  TicTocMsg11 *  msg  )  [virtual]
 

00106 {
00107     // Increment hop count.
00108     msg->setHopCount(msg->getHopCount()+1);
00109 
00110     // Same routing as before: random gate.
00111     int n = gate("out")->size();
00112     int k = intuniform(0,n-1);
00113 
00114     ev << "Forwarding message " << msg << " on port out[" << k << "]\n";
00115     send(msg, "out", k);
00116 }

TicTocMsg11 * Txc11::generateMessage (   )  [virtual]
 

00088 {
00089     // Produce source and destination addresses.
00090     int src = index();   // our module index
00091     int n = size();      // module vector size
00092     int dest = intuniform(0,n-2);
00093     if (dest>=src) dest++;
00094 
00095     char msgname[20];
00096     sprintf(msgname, "tic-%d-to-%d", src, dest);
00097 
00098     // Create message object and set source and destination field.
00099     TicTocMsg11 *msg = new TicTocMsg11(msgname);
00100     msg->setSource(src);
00101     msg->setDestination(dest);
00102     return msg;
00103 }

void Txc11::handleMessage (  cMessage *  msg  )  [virtual]
 

Reimplemented from cSimpleModule.

00058 {
00059     TicTocMsg11 *ttmsg = check_and_cast<TicTocMsg11 *>(msg);
00060 
00061     if (ttmsg->getDestination()==index())
00062     {
00063         // Message arrived
00064         int hopcount = ttmsg->getHopCount();
00065         ev << "Message " << ttmsg << " arrived after " << hopcount << " hops.\n";
00066         numReceived++;
00067         delete ttmsg;
00068         bubble("ARRIVED, starting new one!");
00069 
00070         // Generate another one.
00071         ev << "Generating another message: ";
00072         TicTocMsg11 *newmsg = generateMessage();
00073         ev << newmsg << endl;
00074         forwardMessage(newmsg);
00075         numSent++;
00076 
00077         if (ev.isGUI())
00078             updateDisplay();
00079     }
00080     else
00081     {
00082         // We need to forward the message.
00083         forwardMessage(ttmsg);
00084     }
00085 }

void Txc11::initialize (   )  [virtual]
 

Reimplemented from cModule.

00041 {
00042     // Initialize variables
00043     numSent = 0;
00044     numReceived = 0;
00045     WATCH(numSent);
00046     WATCH(numReceived);
00047 
00048     // Module 0 sends the first message
00049     if (index()==0)
00050     {
00051         // Boot the process scheduling the initial message as a self-message.
00052         TicTocMsg11 *msg = generateMessage();
00053         scheduleAt(0.0, msg);
00054     }
00055 }

Txc11::Module_Class_Members (  Txc11  ,
cSimpleModule  ,
0 
) 
 

void Txc11::updateDisplay (   )  [virtual]
 

00119 {
00120     char buf[40];
00121     sprintf(buf, "rcvd: %ld sent: %ld", numReceived, numSent);
00122     displayString().setTagArg("t",0,buf);
00123 }


Member Data Documentation

long Txc11::numReceived [protected]
 

long Txc11::numSent [protected]
 


The documentation for this class was generated from the following file:
Generated on Fri Apr 1 12:25:42 2005 for Tictoc Tutorial by  doxygen 1.3.9.1