// // This file is part of an OMNeT++/OMNEST simulation example. // // Copyright (C) 2003 Ahmet Sekercioglu // Copyright (C) 2003-2008 Andras Varga // // This file is distributed WITHOUT ANY WARRANTY. See the file // `license' for details on this and other legal matters. // #include <stdio.h> #include <string.h> #include <omnetpp.h> class Txc11 : public cSimpleModule { protected: virtual void forwardMessage(cMessage *msg); virtual void initialize(); virtual void handleMessage(cMessage *msg); }; Define_Module(Txc11); void Txc11::initialize() { if (getIndex()==0) { // Boot the process scheduling the initial message as a self-message. char msgname[20]; sprintf(msgname, "tic-%d", getIndex()); cMessage *msg = new cMessage(msgname); scheduleAt(0.0, msg); } } void Txc11::handleMessage(cMessage *msg) { if (getIndex()==3) { // Message arrived. EV << "Message " << msg << " arrived.\n"; delete msg; } else { // We need to forward the message. forwardMessage(msg); } } void Txc11::forwardMessage(cMessage *msg) { // In this example, we just pick a random gate to send it on. // We draw a random number between 0 and the size of gate `out[]'. int n = gateSize("out"); int k = intuniform(0,n-1); EV << "Forwarding message " << msg << " on port out[" << k << "]\n"; send(msg, "out", k); }