EtherAppSrv Class Reference

#include <EtherAppSrv.h>

List of all members.


Detailed Description

Server-side process EtherAppCli.

Protected Member Functions

virtual void initialize ()
virtual void handleMessage (cMessage *msg)
virtual void finish ()
void registerDSAP (int dsap)
void sendPacket (cMessage *datapacket, const MACAddress &destAddr)

Protected Attributes

int localSAP
int remoteSAP
long packetsSent
long packetsReceived
cOutVector eedVector
cStdDev eedStats

Member Function Documentation

void EtherAppSrv::initialize (  )  [protected, virtual]

00027 {
00028     localSAP = ETHERAPP_SRV_SAP;
00029     remoteSAP = ETHERAPP_CLI_SAP;
00030 
00031     // statistics
00032     packetsSent = packetsReceived = 0;
00033     eedVector.setName("end-to-end delay");
00034     eedStats.setName("end-to-end delay");
00035     WATCH(packetsSent);
00036     WATCH(packetsReceived);
00037 
00038     bool registerSAP = par("registerSAP");
00039     if (registerSAP)
00040         registerDSAP(localSAP);
00041 }

void EtherAppSrv::handleMessage ( cMessage *  msg  )  [protected, virtual]

00044 {
00045     EV << "Received packet `" << msg->getName() << "'\n";
00046 
00047     packetsReceived++;
00048     simtime_t lastEED = simTime() - msg->getCreationTime();
00049     eedVector.record(lastEED);
00050     eedStats.collect(lastEED);
00051 
00052     EtherAppReq *req = check_and_cast<EtherAppReq *>(msg);
00053     Ieee802Ctrl *ctrl = check_and_cast<Ieee802Ctrl *>(req->removeControlInfo());
00054     MACAddress srcAddr = ctrl->getSrc();
00055     long requestId = req->getRequestId();
00056     long replyBytes = req->getResponseBytes();
00057     char msgname[30];
00058     strcpy(msgname,msg->getName());
00059 
00060     delete msg;
00061     delete ctrl;
00062 
00063     // send back packets asked by EtherAppCli side
00064     int k = 0;
00065     strcat(msgname,"-resp-");
00066     char *s = msgname+strlen(msgname);
00067     while (replyBytes>0)
00068     {
00069         int l = replyBytes>MAX_REPLY_CHUNK_SIZE ? MAX_REPLY_CHUNK_SIZE : replyBytes;
00070         replyBytes -= l;
00071 
00072         sprintf(s,"%d",k);
00073 
00074         EV << "Generating packet `" << msgname << "'\n";
00075 
00076         EtherAppResp *datapacket = new EtherAppResp(msgname, IEEE802CTRL_DATA);
00077         datapacket->setRequestId(requestId);
00078         datapacket->setByteLength(l);
00079         sendPacket(datapacket, srcAddr);
00080         packetsSent++;
00081 
00082         k++;
00083     }
00084 
00085 }

void EtherAppSrv::finish (  )  [protected, virtual]

00110 {
00111     recordScalar("packets sent", packetsSent);
00112     recordScalar("packets rcvd", packetsReceived);
00113     recordScalar("end-to-end delay mean", eedStats.getMean());
00114     recordScalar("end-to-end delay stddev", eedStats.getStddev());
00115     recordScalar("end-to-end delay min", eedStats.getMin());
00116     recordScalar("end-to-end delay max", eedStats.getMax());
00117 }

void EtherAppSrv::registerDSAP ( int  dsap  )  [protected]

Referenced by initialize().

00098 {
00099     EV << getFullPath() << " registering DSAP " << dsap << "\n";
00100 
00101     Ieee802Ctrl *etherctrl = new Ieee802Ctrl();
00102     etherctrl->setDsap(dsap);
00103     cMessage *msg = new cMessage("register_DSAP", IEEE802CTRL_REGISTER_DSAP);
00104     msg->setControlInfo(etherctrl);
00105 
00106     send(msg, "out");
00107 }

void EtherAppSrv::sendPacket ( cMessage *  datapacket,
const MACAddress destAddr 
) [protected]

Referenced by handleMessage().

00088 {
00089     Ieee802Ctrl *etherctrl = new Ieee802Ctrl();
00090     etherctrl->setSsap(localSAP);
00091     etherctrl->setDsap(remoteSAP);
00092     etherctrl->setDest(destAddr);
00093     datapacket->setControlInfo(etherctrl);
00094     send(datapacket, "out");
00095 }


Member Data Documentation

int EtherAppSrv::localSAP [protected]

Referenced by initialize(), and sendPacket().

int EtherAppSrv::remoteSAP [protected]

Referenced by initialize(), and sendPacket().

long EtherAppSrv::packetsSent [protected]

Referenced by finish(), handleMessage(), and initialize().

long EtherAppSrv::packetsReceived [protected]

Referenced by finish(), handleMessage(), and initialize().

cOutVector EtherAppSrv::eedVector [protected]

Referenced by handleMessage(), and initialize().

cStdDev EtherAppSrv::eedStats [protected]

Referenced by finish(), handleMessage(), and initialize().


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

Generated on Fri Mar 20 18:51:18 2009 for INET Framework for OMNeT++/OMNEST by  doxygen 1.5.5