//-------------------------------------------------------------
// file: server.cc
// (part of DYNA - an OMNeT++ demo simulation)
//-------------------------------------------------------------
#include "dynapacket_m.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(;;)
{
DynaPacket *pk = (DynaPacket *) receive();
int type = pk->kind();
int serverproc_id;
cModule *mod;
switch (type)
{
case DYNA_CONN_REQ:
mod = srvproc_type->createScheduleInit("serverproc",this);
ev << "DYNA_CONN_REQ: Created process ID=" << mod->id() << endl;
mod->gate("out")->setTo( gate("out") );
sendDirect(pk, 0.0, mod, "in");
break;
default:
serverproc_id = pk->getServerProcId();
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 pk;
} else {
sendDirect(pk, 0.0, mod, "in");
}
break;
}
}
}
syntax highlighted by Code2HTML, v. 0.9.1