//-------------------------------------------------------------
// file: server.cc
// (part of DYNA - an OMNeT++ demo simulation)
//-------------------------------------------------------------
#include "dyna.h"
class Server : public cSimpleModule
{
Module_Class_Members(Server,cSimpleModule,16384)
virtual void activity();
};
Define_Module( Server );
void Server::activity()
{
cModuleType *srvproc_type = findModuleType( "ServerProcess" );
for(;;)
{
cMessage *msg = receive();
int type = msg->kind();
int serverproc_id;
cModule *mod;
switch( type )
{
case CONN_REQ:
mod = srvproc_type->createScheduleInit("serverproc-new",this);
ev << "CONN_REQ: Created process ID=" << mod->id() << endl;
mod->gate("out")->setTo( gate("out") );
sendDirect( msg, 0.0, mod, "in" );
break;
default:
serverproc_id = msg->par("serverproc_id");
ev << "Redirecting msg to process ID="
<< serverproc_id << endl;
mod = simulation.module( serverproc_id );
if (!mod) {
ev << " That process already exited, deleting msg\n";
delete msg;
} else {
sendDirect( msg, 0.0, mod, "in" );
}
break;
}
}
}
syntax highlighted by Code2HTML, v. 0.9.1