#include <EtherAppSrv.h>
| 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 | 
Server-side process EtherAppCli.
Definition at line 30 of file EtherAppSrv.h.
| void EtherAppSrv::finish | ( | ) |  [protected, virtual] | 
Definition at line 109 of file EtherAppSrv.cc.
{
    recordScalar("packets sent", packetsSent);
    recordScalar("packets rcvd", packetsReceived);
    recordScalar("end-to-end delay mean", eedStats.getMean());
    recordScalar("end-to-end delay stddev", eedStats.getStddev());
    recordScalar("end-to-end delay min", eedStats.getMin());
    recordScalar("end-to-end delay max", eedStats.getMax());
}
| void EtherAppSrv::handleMessage | ( | cMessage * | msg | ) |  [protected, virtual] | 
Definition at line 43 of file EtherAppSrv.cc.
{
    EV << "Received packet `" << msg->getName() << "'\n";
    packetsReceived++;
    simtime_t lastEED = simTime() - msg->getCreationTime();
    eedVector.record(lastEED);
    eedStats.collect(lastEED);
    EtherAppReq *req = check_and_cast<EtherAppReq *>(msg);
    Ieee802Ctrl *ctrl = check_and_cast<Ieee802Ctrl *>(req->removeControlInfo());
    MACAddress srcAddr = ctrl->getSrc();
    long requestId = req->getRequestId();
    long replyBytes = req->getResponseBytes();
    char msgname[30];
    strcpy(msgname,msg->getName());
    delete msg;
    delete ctrl;
    // send back packets asked by EtherAppCli side
    int k = 0;
    strcat(msgname,"-resp-");
    char *s = msgname+strlen(msgname);
    while (replyBytes>0)
    {
        int l = replyBytes>MAX_REPLY_CHUNK_SIZE ? MAX_REPLY_CHUNK_SIZE : replyBytes;
        replyBytes -= l;
        sprintf(s,"%d",k);
        EV << "Generating packet `" << msgname << "'\n";
        EtherAppResp *datapacket = new EtherAppResp(msgname, IEEE802CTRL_DATA);
        datapacket->setRequestId(requestId);
        datapacket->setByteLength(l);
        sendPacket(datapacket, srcAddr);
        packetsSent++;
        k++;
    }
}
| void EtherAppSrv::initialize | ( | ) |  [protected, virtual] | 
Definition at line 26 of file EtherAppSrv.cc.
{
    localSAP = ETHERAPP_SRV_SAP;
    remoteSAP = ETHERAPP_CLI_SAP;
    // statistics
    packetsSent = packetsReceived = 0;
    eedVector.setName("end-to-end delay");
    eedStats.setName("end-to-end delay");
    WATCH(packetsSent);
    WATCH(packetsReceived);
    bool registerSAP = par("registerSAP");
    if (registerSAP)
        registerDSAP(localSAP);
}
| void EtherAppSrv::registerDSAP | ( | int | dsap | ) |  [protected] | 
Definition at line 97 of file EtherAppSrv.cc.
Referenced by initialize().
{
    EV << getFullPath() << " registering DSAP " << dsap << "\n";
    Ieee802Ctrl *etherctrl = new Ieee802Ctrl();
    etherctrl->setDsap(dsap);
    cMessage *msg = new cMessage("register_DSAP", IEEE802CTRL_REGISTER_DSAP);
    msg->setControlInfo(etherctrl);
    send(msg, "out");
}
| void EtherAppSrv::sendPacket | ( | cMessage * | datapacket, | |
| const MACAddress & | destAddr | |||
| ) |  [protected] | 
Definition at line 87 of file EtherAppSrv.cc.
Referenced by handleMessage().
| cStdDev EtherAppSrv::eedStats  [protected] | 
Definition at line 39 of file EtherAppSrv.h.
Referenced by finish(), handleMessage(), and initialize().
| cOutVector EtherAppSrv::eedVector  [protected] | 
Definition at line 38 of file EtherAppSrv.h.
Referenced by handleMessage(), and initialize().
| int EtherAppSrv::localSAP  [protected] | 
Definition at line 33 of file EtherAppSrv.h.
Referenced by initialize(), and sendPacket().
| long EtherAppSrv::packetsReceived  [protected] | 
Definition at line 37 of file EtherAppSrv.h.
Referenced by finish(), handleMessage(), and initialize().
| long EtherAppSrv::packetsSent  [protected] | 
Definition at line 36 of file EtherAppSrv.h.
Referenced by finish(), handleMessage(), and initialize().
| int EtherAppSrv::remoteSAP  [protected] | 
Definition at line 34 of file EtherAppSrv.h.
Referenced by initialize(), and sendPacket().
 1.7.1
 1.7.1