… | |
… | |
101 | //////////////////////////////////////////////////////////////////////////////////////// |
101 | //////////////////////////////////////////////////////////////////////////////////////// |
102 | |
102 | |
103 | // a very simple fifo pkt-queue |
103 | // a very simple fifo pkt-queue |
104 | class pkt_queue |
104 | class pkt_queue |
105 | { |
105 | { |
106 | net_packet *queue[QUEUEDEPTH]; |
|
|
107 | int i, j; |
106 | int i, j; |
|
|
107 | int max_queue; |
|
|
108 | double max_ttl; |
|
|
109 | |
|
|
110 | struct pkt { |
|
|
111 | ev_tstamp tstamp; |
|
|
112 | net_packet *pkt; |
|
|
113 | } *queue; |
|
|
114 | |
|
|
115 | void expire_cb (ev::timer &w, int revents); ev::timer expire; |
108 | |
116 | |
109 | public: |
117 | public: |
110 | |
118 | |
111 | void put (net_packet *p); |
119 | void put (net_packet *p); |
112 | net_packet *get (); |
120 | net_packet *get (); |
113 | |
121 | |
114 | pkt_queue (); |
122 | bool empty () |
|
|
123 | { |
|
|
124 | return i == j; |
|
|
125 | } |
|
|
126 | |
|
|
127 | pkt_queue (double max_ttl, int max_queue); |
115 | ~pkt_queue (); |
128 | ~pkt_queue (); |
116 | }; |
129 | }; |
117 | |
130 | |
118 | enum |
131 | enum |
119 | { |
132 | { |