pushback-message.h
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:2k
源码类别:

通讯编程

开发平台:

Visual C++

  1. #ifndef ns_pushback_message_h
  2. #define ns_pushback_message_h
  3. #define PUSHBACK_REQUEST_MSG     1 
  4. #define PUSHBACK_REFRESH_MSG     2
  5. #define PUSHBACK_STATUS_MSG      3
  6. #define PUSHBACK_CANCEL_MSG      4
  7. class AggSpec;
  8. class PushbackMessage {
  9.  public:
  10.   int msgID_;
  11.   int senderID_;
  12.   int targetID_;
  13.   //id details of the downstream PBA.
  14.   int qid_;
  15.   int rlsID_;
  16.   void set(int msg, int sender, int dest, int qid, int rlsID) {
  17.     msgID_ = msg;
  18.     senderID_ = sender;
  19.     targetID_ = dest;
  20.     qid_ = qid;
  21.     rlsID_=rlsID;
  22.   }
  23.   static char * type(PushbackMessage * msg) {
  24.     switch (msg->msgID_) {
  25.     case PUSHBACK_REQUEST_MSG: return "REQUEST";
  26.     case PUSHBACK_REFRESH_MSG: return "REFRESH";
  27.     case PUSHBACK_STATUS_MSG: return "STATUS";
  28.     case PUSHBACK_CANCEL_MSG: return "CANCEL";
  29.     default: return "UNKNOWN";
  30.     }
  31.   }
  32. };
  33. class PushbackRequestMessage : public PushbackMessage {
  34.  public:
  35.   AggSpec * aggSpec_;  
  36.   double limit_;
  37.   int depth_;          //depth of the sender. 
  38.   PushbackRequestMessage(int sender, int dest, int qid, int rlsID, 
  39.  AggSpec * aggSpec, double limit, int depth) {
  40.     set(PUSHBACK_REQUEST_MSG, sender, dest, qid, rlsID);
  41.     aggSpec_ = aggSpec;
  42.     limit_=limit;
  43.     depth_ = depth;
  44.   }
  45. };
  46. class PushbackStatusMessage : public PushbackMessage {
  47.  public:
  48.   double arrivalRate_;   //in bps as always.
  49.   int height_;           //height of sender.
  50.  
  51.   PushbackStatusMessage(int sender, int dest, int qid, int rlsID, 
  52. double arrivalRate, int height) {
  53.     set(PUSHBACK_STATUS_MSG, sender, dest, qid, rlsID);
  54.     arrivalRate_ = arrivalRate;
  55.     height_=height;
  56.   }
  57. };
  58. class PushbackRefreshMessage : public PushbackMessage {
  59.  public:
  60.   AggSpec * aggSpec_;
  61.   double limit_;
  62.   
  63.   PushbackRefreshMessage(int sender, int dest, int qid, int rlsID, 
  64.  AggSpec * aggSpec, double newLimit) {
  65.     set(PUSHBACK_REFRESH_MSG, sender, dest, qid, rlsID);
  66.     aggSpec_= aggSpec;
  67.     limit_=newLimit;
  68.   }
  69. };
  70. class PushbackCancelMessage : public PushbackMessage {
  71.  public:
  72.   
  73.   PushbackCancelMessage(int sender, int dest, int qid, int rlsID) {
  74.     set(PUSHBACK_CANCEL_MSG, sender, dest, qid, rlsID);
  75.   }
  76. };
  77. #endif