Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <omnetpp.h>
- class Server: public cSimpleModule {
- private:
- cQueue queue; //the queue; first job in the queue is being serviced
- cMessage *departure; //message-reminder of the end of service (job departure)
- simtime_t departure_time; //time of the next departure
- int N, acc, lost;
- cStdDev lr;
- cDoubleHistogram overflow;
- simtime_t startTime, endTime;
- int lost2;
- cLongHistogram losts;
- cDoubleHistogram queueAvailable;
- simtime_t availableTime;
- protected:
- virtual void initialize();
- virtual void handleMessage(cMessage *msgin);
- };
- Define_Module(Server);
- void Server::initialize() {
- departure = new cMessage("Departure");
- N = 10;
- acc = lost = 0;
- overflow.setNumCells(100);
- availableTime = simTime();
- }
- void Server::handleMessage(cMessage *msgin) {
- if (msgin == departure) {
- cMessage *msg = (cMessage *) queue.pop(); //remove job from the head of the queue
- if (queue.length() == N - 1) {
- endTime = simTime();
- overflow.collect(endTime - startTime);
- losts.collect(lost2);
- lost2 = 0;
- }
- send(msg, "out");
- if (!queue.empty()) {
- departure_time = simTime() + par("service_time");
- scheduleAt(departure_time, departure);
- }
- if(queue.length() == 0){
- availableTime = simTime();
- }
- } else if (queue.length() < N) {
- if (queue.empty()) {
- departure_time = simTime() + par("service_time");
- scheduleAt(departure_time, departure);
- }
- queue.insert(msgin); //put job at the end of the queue
- //starting trigger
- if (queue.length() == N) {
- startTime = simTime();
- }
- ++acc;
- } else {
- delete msgin;
- ++lost;
- ++lost2;
- }
- lr.collect((double) lost / (lost + acc));
- }
- -------
- #include <omnetpp.h>
- class Sink : public cSimpleModule
- {
- protected:
- virtual void handleMessage(cMessage *msgin);
- };
- Define_Module(Sink);
- void Sink::handleMessage(cMessage *msgin)
- {
- delete msgin;
- }
- ---
- #include <omnetpp.h>
- class Sink : public cSimpleModule
- {
- protected:
- virtual void handleMessage(cMessage *msgin);
- };
- Define_Module(Sink);
- void Sink::handleMessage(cMessage *msgin)
- {
- delete msgin;
- }
Add Comment
Please, Sign In to add comment