EtherAppSrv Class Reference

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::finish (  )  [protected, virtual]

00140 {
00141     if (par("writeScalars").boolValue())
00142     {
00143         recordScalar("packets sent", packetsSent);
00144         recordScalar("packets rcvd", packetsReceived);
00145         recordScalar("end-to-end delay mean", eedStats.mean());
00146         recordScalar("end-to-end delay stddev", eedStats.stddev());
00147         recordScalar("end-to-end delay min", eedStats.min());
00148         recordScalar("end-to-end delay max", eedStats.max());
00149     }
00150 }

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

00074 {
00075     EV << "Received packet `" << msg->name() << "'\n";
00076 
00077     packetsReceived++;
00078     simtime_t lastEED = simTime() - msg->creationTime();
00079     eedVector.record(lastEED);
00080     eedStats.collect(lastEED);
00081 
00082     EtherAppReq *req = check_and_cast<EtherAppReq *>(msg);
00083     Ieee802Ctrl *ctrl = check_and_cast<Ieee802Ctrl *>(req->removeControlInfo());
00084     MACAddress srcAddr = ctrl->getSrc();
00085     long requestId = req->getRequestId();
00086     long replyBytes = req->getResponseBytes();
00087     char msgname[30];
00088     strcpy(msgname,msg->name());
00089 
00090     delete msg;
00091     delete ctrl;
00092 
00093     // send back packets asked by EtherAppCli side
00094     int k = 0;
00095     strcat(msgname,"-resp-");
00096     char *s = msgname+strlen(msgname);
00097     while (replyBytes>0)
00098     {
00099         int l = replyBytes>MAX_REPLY_CHUNK_SIZE ? MAX_REPLY_CHUNK_SIZE : replyBytes;
00100         replyBytes -= l;
00101 
00102         sprintf(s,"%d",k);
00103 
00104         EV << "Generating packet `" << msgname << "'\n";
00105 
00106         EtherAppResp *datapacket = new EtherAppResp(msgname, IEEE802CTRL_DATA);
00107         datapacket->setRequestId(requestId);
00108         datapacket->setByteLength(l);
00109         sendPacket(datapacket, srcAddr);
00110         packetsSent++;
00111 
00112         k++;
00113     }
00114 
00115 }

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

00057 {
00058     localSAP = ETHERAPP_SRV_SAP;
00059     remoteSAP = ETHERAPP_CLI_SAP;
00060 
00061     // statistics
00062     packetsSent = packetsReceived = 0;
00063     eedVector.setName("end-to-end delay");
00064     eedStats.setName("end-to-end delay");
00065     WATCH(packetsSent);
00066     WATCH(packetsReceived);
00067 
00068     bool registerSAP = par("registerSAP");
00069     if (registerSAP)
00070         registerDSAP(localSAP);
00071 }

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

00128 {
00129     EV << fullPath() << " registering DSAP " << dsap << "\n";
00130 
00131     Ieee802Ctrl *etherctrl = new Ieee802Ctrl();
00132     etherctrl->setDsap(dsap);
00133     cMessage *msg = new cMessage("register_DSAP", IEEE802CTRL_REGISTER_DSAP);
00134     msg->setControlInfo(etherctrl);
00135 
00136     send(msg, "out");
00137 }

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

00118 {
00119     Ieee802Ctrl *etherctrl = new Ieee802Ctrl();
00120     etherctrl->setSsap(localSAP);
00121     etherctrl->setDsap(remoteSAP);
00122     etherctrl->setDest(destAddr);
00123     datapacket->setControlInfo(etherctrl);
00124     send(datapacket, "out");
00125 }


Member Data Documentation

cStdDev EtherAppSrv::eedStats [protected]

cOutVector EtherAppSrv::eedVector [protected]

int EtherAppSrv::localSAP [protected]

long EtherAppSrv::packetsReceived [protected]

long EtherAppSrv::packetsSent [protected]

int EtherAppSrv::remoteSAP [protected]


The documentation for this class was generated from the following file:
Generated on Wed Apr 4 13:20:19 2007 for INET Framework for OMNeT++/OMNEST by  doxygen 1.4.7