#include "minimumselector.h" Define_Module( MinimumSelector ); void MinimumSelector::activity() { // get parameters int rg = par("random_generator"); int serverCount = par("server_count"); // search servers and save reference to its workload parameter cModule *compound = parentModule(); for (int i = 0; isubmodule("server", i); if ((svr==0) || (strcmp(svr->className(), "Server")!=0)) { throw cException("server[] contains non-Server"); } server[i] = (Server*) svr; } // message loop for (;;) { // get message cMessage *msg = receive(); // search server with minimum workload (count the number of occurences) int i; int count = 0; long load = 100000000; for (i = 0; igetJobsInSystem(); if (lgetJobsInSystem()) { if (serverNo==0) break; serverNo--; } } if (serverNo!=0) throw cException("error while choosing server"); // and send it to that server send(msg, "out", i); } } void MinimumSelector::initialize() { server = new Server *[par("server_count")]; } void MinimumSelector::finish() { delete [] server; }