📄 server.cc
字号:
/* * Copyright (C) 2000, 2001 by Holger Karl * This file is for internal use only. * * Written by: Holger Karl <karl@ee.tu-berlin.de> * * Time-stamp: <01/05/21 14:33:08 karl> */#include "server.h"Define_Module (Server);voidServer::initialize(){ busy = 0; speed = par ("speed"); // prepare the self-message: taskIsDone = new cMessage; taskIsDone->setKind (taskDone);}voidServer::finish(){ recordScalar ("utilization", AreaUnderUtilizationCurve / simTime());}voidServer::updateStatistics (int kind){ simtime_t timeSinceLastEvent = simTime() - timeOfLastEvent; timeOfLastEvent = simTime(); switch (kind) { case taskArrives: break; case taskDone: AreaUnderUtilizationCurve += timeSinceLastEvent; break; default: ev << "No statistics implemented for this kind of event" << endl; break; }}voidServer::handleMessage (cMessage *msg){ double size; int type = msg->kind(); cMessage *statusAnswer; switch (type) { case taskArrives: if (busy) { ev << "Server received a task when already busy - ignored!\n" ; } else { busy = 1; size = msg->par ("size"); scheduleAt (simTime() + size/speed, taskIsDone); } delete msg; updateStatistics (taskArrives); break; case taskDone: if (!busy) { ev << "Server told itself a task is done when not busy - ignored!\n"; } else { cMessage *taskDoneToDispatcher = new cMessage ("Task done"); taskDoneToDispatcher->setKind (taskDone); send (taskDoneToDispatcher, "toDispatcher"); busy = 0; } updateStatistics (taskDone); break; case checkStatus: statusAnswer = new cMessage ("Status report"); statusAnswer->setKind (checkStatusResult); statusAnswer->addPar("busy") = busy; send (statusAnswer, "toDispatcher"); delete msg; break; default: ev << "Server received an unknown message - ignored!\n"; delete msg; break; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -