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 |
|
00138 { 00139 if (par("writeScalars").boolValue()) 00140 { 00141 recordScalar("packets sent", packetsSent); 00142 recordScalar("packets rcvd", packetsReceived); 00143 recordScalar("end-to-end delay mean", eedStats.mean()); 00144 recordScalar("end-to-end delay stddev", eedStats.stddev()); 00145 recordScalar("end-to-end delay min", eedStats.min()); 00146 recordScalar("end-to-end delay max", eedStats.max()); 00147 } 00148 }
|
|
00072 { 00073 EV << "Received packet `" << msg->name() << "'\n"; 00074 00075 packetsReceived++; 00076 simtime_t lastEED = simTime() - msg->creationTime(); 00077 eedVector.record(lastEED); 00078 eedStats.collect(lastEED); 00079 00080 EtherAppReq *req = check_and_cast<EtherAppReq *>(msg); 00081 Ieee802Ctrl *ctrl = check_and_cast<Ieee802Ctrl *>(req->removeControlInfo()); 00082 MACAddress srcAddr = ctrl->getSrc(); 00083 long requestId = req->getRequestId(); 00084 long replyBytes = req->getResponseBytes(); 00085 char msgname[30]; 00086 strcpy(msgname,msg->name()); 00087 00088 delete msg; 00089 delete ctrl; 00090 00091 // send back packets asked by EtherAppCli side 00092 int k = 0; 00093 strcat(msgname,"-resp-"); 00094 char *s = msgname+strlen(msgname); 00095 while (replyBytes>0) 00096 { 00097 int l = replyBytes>MAX_REPLY_CHUNK_SIZE ? MAX_REPLY_CHUNK_SIZE : replyBytes; 00098 replyBytes -= l; 00099 00100 sprintf(s,"%d",k); 00101 00102 EV << "Generating packet `" << msgname << "'\n"; 00103 00104 EtherAppResp *datapacket = new EtherAppResp(msgname, IEEE802CTRL_DATA); 00105 datapacket->setRequestId(requestId); 00106 datapacket->setByteLength(l); 00107 sendPacket(datapacket, srcAddr); 00108 packetsSent++; 00109 00110 k++; 00111 } 00112 00113 }
|
|
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 registerDSAP(localSAP); 00069 }
|
|
00126 { 00127 EV << fullPath() << " registering DSAP " << dsap << "\n"; 00128 00129 Ieee802Ctrl *etherctrl = new Ieee802Ctrl(); 00130 etherctrl->setDsap(dsap); 00131 cMessage *msg = new cMessage("register_DSAP", IEEE802CTRL_REGISTER_DSAP); 00132 msg->setControlInfo(etherctrl); 00133 00134 send(msg, "out"); 00135 }
|
|
00116 { 00117 Ieee802Ctrl *etherctrl = new Ieee802Ctrl(); 00118 etherctrl->setSsap(localSAP); 00119 etherctrl->setDsap(remoteSAP); 00120 etherctrl->setDest(destAddr); 00121 datapacket->setControlInfo(etherctrl); 00122 send(datapacket, "out"); 00123 }
|
|
|
|
|
|
|
|
|
|
|
|
|