sources:
generator.cpp (709 bytes)
generator.h (417 bytes)
generator_n.cpp (4.0k)
lbs_i.cpp (2.6k)
lbs_i.h (430 bytes)
lbs_i_n.cpp (4.1k)
lbs_ii.cpp (3.3k)
lbs_ii.h (439 bytes)
lbs_ii_n.cpp (4.1k)
minimumselector.cpp (1.7k)
minimumselector.h (359 bytes)
minimumselector_n.cpp (4.1k)
randomselector.cpp (454 bytes)
randomselector.h (266 bytes)
randomselector_n.cpp (4.1k)
server.cpp (1.6k)
server.h (508 bytes)
server_n.cpp (4.0k)
servicenet_n.cpp (13.6k)
sink.cpp (1.3k)
sink.h (495 bytes)
sink_n.cpp (3.9k)


website:
more info here


screenshot:
studies/performance/Performance-Code5/server.cpp
download file

  1 #include "server.h"
  2
  3 Define_Module( Server );
  4
  5 void Server::activity()
  6 {
  7     // init counting
  8     messageCount = 0;
  9     jobsInSystem = 0;
 10
 11     // get parameters
 12     cPar &service_time = par("service_time");
 13
 14     // setup finish-message
 15     cMessage finishMessage("finish");
 16    
 17     // the currently processed message
 18     cMessage *currentMessage = 0;
 19
 20     // process messages
 21     for (;;) {
 22         // fetch next message
 23         cMessage *msg = receive();
 24         if (msg==&finishMessage) {
 25             // finished processing, so send away current message
 26             messageCount++;
 27             send(currentMessage, "out");
 28             // handle next message if available
 29             if (!queue.empty()) {
 30                 currentMessage = (cMessage*) queue.pop();
 31                 scheduleAt(simTime() + (simtime_t) service_time, &finishMessage);
 32             } else currentMessage = 0;
 33         } else {
 34             // new message arrival
 35             if (currentMessage==0) {
 36                 // server is idle => process message immediately
 37                 currentMessage = msg;
 38                 scheduleAt(simTime() + (simtime_t) service_time, &finishMessage);
 39             } else {
 40                 // server is busy => enqueue message
 41                 queue.insert(msg);
 42             }
 43         }
 44         // update job count
 45         jobsInSystem = queue.length() + (currentMessage!=0) ? 1 : 0;
 46     }
 47 }
 48
 49 void Server::initialize()
 50 {
 51
 52 }
 53
 54 void Server::finish()
 55 {
 56     int index = par("address");
 57     ev << "Server " << index << ": Total messages processed: " << messageCount << endl;
 58 }
 59