• Main Page
  • Classes
  • Files
  • File List

/Users/yzchen/ns/ns-allinone-2.33/ns-2.33/pushback/pushback-message.h

00001 #ifndef ns_pushback_message_h
00002 #define ns_pushback_message_h
00003 
00004 #define PUSHBACK_REQUEST_MSG     1 
00005 #define PUSHBACK_REFRESH_MSG     2
00006 #define PUSHBACK_STATUS_MSG      3
00007 #define PUSHBACK_CANCEL_MSG      4
00008 
00009 class AggSpec;
00010 
00011 class PushbackMessage {
00012  public:
00013   int msgID_;
00014   int senderID_;
00015   int targetID_;
00016 
00017   //id details of the downstream PBA.
00018   int qid_;
00019   int rlsID_;
00020 
00021   void set(int msg, int sender, int dest, int qid, int rlsID) {
00022     msgID_ = msg;
00023     senderID_ = sender;
00024     targetID_ = dest;
00025     qid_ = qid;
00026     rlsID_=rlsID;
00027   }
00028 
00029   static char * type(PushbackMessage * msg) {
00030     switch (msg->msgID_) {
00031     case PUSHBACK_REQUEST_MSG: return "REQUEST";
00032     case PUSHBACK_REFRESH_MSG: return "REFRESH";
00033     case PUSHBACK_STATUS_MSG: return "STATUS";
00034     case PUSHBACK_CANCEL_MSG: return "CANCEL";
00035     default: return "UNKNOWN";
00036     }
00037   }
00038 };
00039 
00040 
00041 class PushbackRequestMessage : public PushbackMessage {
00042  public:
00043   AggSpec * aggSpec_;  
00044   double limit_;
00045   int depth_;          //depth of the sender. 
00046 
00047   PushbackRequestMessage(int sender, int dest, int qid, int rlsID, 
00048                          AggSpec * aggSpec, double limit, int depth) {
00049     set(PUSHBACK_REQUEST_MSG, sender, dest, qid, rlsID);
00050     aggSpec_ = aggSpec;
00051     limit_=limit;
00052     depth_ = depth;
00053   }
00054 };
00055 
00056 class PushbackStatusMessage : public PushbackMessage {
00057  public:
00058   double arrivalRate_;   //in bps as always.
00059   int height_;           //height of sender.
00060  
00061   PushbackStatusMessage(int sender, int dest, int qid, int rlsID, 
00062                         double arrivalRate, int height) {
00063     set(PUSHBACK_STATUS_MSG, sender, dest, qid, rlsID);
00064     arrivalRate_ = arrivalRate;
00065     height_=height;
00066   }
00067 };
00068 
00069 class PushbackRefreshMessage : public PushbackMessage {
00070  public:
00071   AggSpec * aggSpec_;
00072   double limit_;
00073   
00074   PushbackRefreshMessage(int sender, int dest, int qid, int rlsID, 
00075                          AggSpec * aggSpec, double newLimit) {
00076     set(PUSHBACK_REFRESH_MSG, sender, dest, qid, rlsID);
00077     aggSpec_= aggSpec;
00078     limit_=newLimit;
00079   }
00080 };
00081 
00082 class PushbackCancelMessage : public PushbackMessage {
00083  public:
00084   
00085   PushbackCancelMessage(int sender, int dest, int qid, int rlsID) {
00086     set(PUSHBACK_CANCEL_MSG, sender, dest, qid, rlsID);
00087   }
00088 };
00089 
00090 #endif
00091 

Generated on Tue Aug 10 2010 16:16:07 for ns-2.33 by  doxygen 1.7.1