Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

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]
 

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 }

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

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 }

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     registerDSAP(localSAP);
00069 }

void EtherAppSrv::registerDSAP int  dsap  )  [protected]
 

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 }

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

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 }


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 Sat Apr 1 20:52:21 2006 for INET Framework for OMNeT++/OMNEST by  doxygen 1.4.1