#include <rxmit_queue.h>
Collaboration diagram for ReXmitQ:

Public Member Functions | |
| ReXmitQ () | |
| void | insert (Time rxat, Packet *p, int num_rexmits) |
| void | peekHead (Time *rxat, Packet **pp, int *rexmits_left) |
| void | removeHead () |
| void | remove (Packet *p) |
| ReXmitQIter | iter () |
Private Attributes | |
| rexent_head | head |
|
|
Definition at line 46 of file rxmit_queue.cc. References head, and LIST_INIT.
00047 {
00048 LIST_INIT(&head)
00049 }
|
|
||||||||||||||||
|
Definition at line 52 of file rxmit_queue.cc. References head, LIST_INSERT_AFTER, LIST_INSERT_BEFORE, and LIST_INSERT_HEAD. Referenced by imepAgent::handlerReXmitTimer(), and imepAgent::scheduleReXmit().
00053 {
00054 struct rexent *r = new rexent;
00055 r->rexmit_at = rxat;
00056 r->p = p;
00057 r->rexmits_left = num_rexmits;
00058
00059 struct rexent *i;
00060
00061 if (NULL == head.lh_first || rxat < head.lh_first->rexmit_at)
00062 {
00063 LIST_INSERT_HEAD(&head, r, next);
00064 return;
00065 }
00066
00067 for (i = head.lh_first ; i != NULL ; i = i->next.le_next )
00068 {
00069 if (rxat < i->rexmit_at)
00070 {
00071 LIST_INSERT_BEFORE(i, r, next);
00072 return;
00073 }
00074 if (NULL == i->next.le_next)
00075 {
00076 LIST_INSERT_AFTER(i, r, next);
00077 return;
00078 }
00079 }
00080 }
|
|
|
Definition at line 84 of file rxmit_queue.h. References head. Referenced by imepAgent::findObjectSequence(), and imepAgent::purgeReXmitQ().
00084 {
00085 return ReXmitQIter(head.lh_first);
00086 }
|
|
||||||||||||||||
|
Definition at line 83 of file rxmit_queue.cc. References head. Referenced by imepAgent::handlerReXmitTimer().
|
|
|
Definition at line 107 of file rxmit_queue.cc. References head, and LIST_REMOVE. Referenced by imepAgent::purgeReXmitQ(), and imepAgent::removeObjectResponse().
00108 {
00109 struct rexent *i;
00110 for (i = head.lh_first ; i != NULL ; i = i->next.le_next )
00111 {
00112 if (p == i->p)
00113 {
00114 LIST_REMOVE(i, next);
00115 delete i;
00116 return;
00117 }
00118 }
00119 }
|
|
|
Definition at line 97 of file rxmit_queue.cc. References head, and LIST_REMOVE. Referenced by imepAgent::handlerReXmitTimer().
00098 {
00099 struct rexent *i;
00100 i = head.lh_first;
00101 if (NULL == i) return;
00102 LIST_REMOVE(i, next);
00103 delete i;
00104 }
|
|
|
Definition at line 89 of file rxmit_queue.h. Referenced by insert(), iter(), peekHead(), remove(), removeHead(), and ReXmitQ(). |
1.3.3