# Txc10 Class Reference

Inheritance diagram for Txc10:

List of all members.

## Detailed Description

In this step the destination address is no longer node 2 -- we draw a random destination, and we'll add the destination address to the message.

The best way is to subclass cMessage and add destination as a data member. Hand-coding the message class is usually tiresome because it contains a lot of boilerplate code, so we let OMNeT++ generate the class for us. The message class specification is in tictoc10.msg -- tictoc10_m.h and .cc will be generated from this file automatically.

To make the model execute longer, after a message arrives to its destination the destination node will generate another message with a random destination address, and so forth.

## Protected Member Functions

virtual TicTocMsg10 * | generateMessage ()
virtual void | forwardMessage (TicTocMsg10 *msg)
virtual void | initialize ()
virtual void | handleMessage (cMessage *msg)

## Member Function Documentation

void Txc10::forwardMessage | ( | TicTocMsg10 * | msg | ) | `[protected, virtual]`

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

TicTocMsg10 * Txc10::generateMessage | ( |  | ) | `[protected, virtual]`

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

void Txc10::handleMessage | ( | cMessage * | msg | ) | `[protected, virtual]`

Reimplemented from cSimpleModule.

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

void Txc10::initialize | ( |  | ) | `[protected, virtual]`

Reimplemented from cModule.

    00048 {
    00049     // Module 0 sends the first message
    00050     if (index()==0)
    00051     {
    00052         // Boot the process scheduling the initial message as a self-message.
    00053         TicTocMsg10 *msg = generateMessage();
    00054         scheduleAt(0.0, msg);
    00055     }
    00056 }

The documentation for this class was generated from the following file:

- txc10.cc