File: pushback-message.h

package info (click to toggle)
ns2 2.35%2Bdfsg-2.1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 78,780 kB
  • ctags: 27,490
  • sloc: cpp: 172,923; tcl: 107,130; perl: 6,391; sh: 6,143; ansic: 5,846; makefile: 816; awk: 525; csh: 355
file content (91 lines) | stat: -rw-r--r-- 2,152 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#ifndef ns_pushback_message_h
#define ns_pushback_message_h

#define PUSHBACK_REQUEST_MSG     1 
#define PUSHBACK_REFRESH_MSG     2
#define PUSHBACK_STATUS_MSG      3
#define PUSHBACK_CANCEL_MSG      4

class AggSpec;

class PushbackMessage {
 public:
  int msgID_;
  int senderID_;
  int targetID_;

  //id details of the downstream PBA.
  int qid_;
  int rlsID_;

  void set(int msg, int sender, int dest, int qid, int rlsID) {
    msgID_ = msg;
    senderID_ = sender;
    targetID_ = dest;
    qid_ = qid;
    rlsID_=rlsID;
  }

  static char * type(PushbackMessage * msg) {
    switch (msg->msgID_) {
    case PUSHBACK_REQUEST_MSG: return "REQUEST";
    case PUSHBACK_REFRESH_MSG: return "REFRESH";
    case PUSHBACK_STATUS_MSG: return "STATUS";
    case PUSHBACK_CANCEL_MSG: return "CANCEL";
    default: return "UNKNOWN";
    }
  }
};


class PushbackRequestMessage : public PushbackMessage {
 public:
  AggSpec * aggSpec_;  
  double limit_;
  int depth_;          //depth of the sender. 

  PushbackRequestMessage(int sender, int dest, int qid, int rlsID, 
			 AggSpec * aggSpec, double limit, int depth) {
    set(PUSHBACK_REQUEST_MSG, sender, dest, qid, rlsID);
    aggSpec_ = aggSpec;
    limit_=limit;
    depth_ = depth;
  }
};

class PushbackStatusMessage : public PushbackMessage {
 public:
  double arrivalRate_;   //in bps as always.
  int height_;           //height of sender.
 
  PushbackStatusMessage(int sender, int dest, int qid, int rlsID, 
			double arrivalRate, int height) {
    set(PUSHBACK_STATUS_MSG, sender, dest, qid, rlsID);
    arrivalRate_ = arrivalRate;
    height_=height;
  }
};

class PushbackRefreshMessage : public PushbackMessage {
 public:
  AggSpec * aggSpec_;
  double limit_;
  
  PushbackRefreshMessage(int sender, int dest, int qid, int rlsID, 
			 AggSpec * aggSpec, double newLimit) {
    set(PUSHBACK_REFRESH_MSG, sender, dest, qid, rlsID);
    aggSpec_= aggSpec;
    limit_=newLimit;
  }
};

class PushbackCancelMessage : public PushbackMessage {
 public:
  
  PushbackCancelMessage(int sender, int dest, int qid, int rlsID) {
    set(PUSHBACK_CANCEL_MSG, sender, dest, qid, rlsID);
  }
};

#endif