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 |
|
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 }
|
|
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 }
|
|
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 }
|
|
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 }
|
|
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 }
|
|
|
|
|
|
|
|
|
|
|
|
|