kanciastopantalones

lab3v2

Mar 18th, 2016
38
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.39 KB | None | 0 0
  1. #include <omnetpp.h>
  2.  
  3. class Server: public cSimpleModule {
  4. private:
  5. cQueue queue; //the queue; first job in the queue is being serviced
  6. cMessage *departure; //message-reminder of the end of service (job departure)
  7. simtime_t departure_time; //time of the next departure
  8. int N, acc, lost;
  9. cStdDev lr;
  10. cDoubleHistogram overflow;
  11. simtime_t startTime, endTime;
  12. int lost2;
  13. cLongHistogram losts;
  14. cDoubleHistogram queueAvailable;
  15. simtime_t availableTime;
  16.  
  17. protected:
  18. virtual void initialize();
  19. virtual void handleMessage(cMessage *msgin);
  20.  
  21. };
  22.  
  23. Define_Module(Server);
  24.  
  25. void Server::initialize() {
  26. departure = new cMessage("Departure");
  27. N = 10;
  28. acc = lost = 0;
  29. overflow.setNumCells(100);
  30. availableTime = simTime();
  31. }
  32.  
  33. void Server::handleMessage(cMessage *msgin) {
  34. if (msgin == departure) {
  35. cMessage *msg = (cMessage *) queue.pop(); //remove job from the head of the queue
  36. if (queue.length() == N - 1) {
  37. endTime = simTime();
  38. overflow.collect(endTime - startTime);
  39. losts.collect(lost2);
  40. lost2 = 0;
  41. }
  42. send(msg, "out");
  43. if (!queue.empty()) {
  44. departure_time = simTime() + par("service_time");
  45. scheduleAt(departure_time, departure);
  46. }
  47. if(queue.length() == 0){
  48. availableTime = simTime();
  49. }
  50. } else if (queue.length() < N) {
  51. if (queue.empty()) {
  52. departure_time = simTime() + par("service_time");
  53. scheduleAt(departure_time, departure);
  54. }
  55. queue.insert(msgin); //put job at the end of the queue
  56. //starting trigger
  57. if (queue.length() == N) {
  58. startTime = simTime();
  59. }
  60. ++acc;
  61. } else {
  62. delete msgin;
  63. ++lost;
  64. ++lost2;
  65. }
  66.  
  67. lr.collect((double) lost / (lost + acc));
  68. }
  69.  
  70.  
  71.  
  72. -------
  73.  
  74.  
  75. #include <omnetpp.h>
  76.  
  77. class Sink : public cSimpleModule
  78. {
  79. protected:
  80. virtual void handleMessage(cMessage *msgin);
  81. };
  82.  
  83.  
  84. Define_Module(Sink);
  85.  
  86.  
  87. void Sink::handleMessage(cMessage *msgin)
  88. {
  89. delete msgin;
  90. }
  91.  
  92.  
  93.  
  94. ---
  95.  
  96.  
  97. #include <omnetpp.h>
  98.  
  99. class Sink : public cSimpleModule
  100. {
  101. protected:
  102. virtual void handleMessage(cMessage *msgin);
  103. };
  104.  
  105.  
  106. Define_Module(Sink);
  107.  
  108.  
  109. void Sink::handleMessage(cMessage *msgin)
  110. {
  111. delete msgin;
  112. }
Add Comment
Please, Sign In to add comment