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