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

通讯编程

开发平台:

Visual C++

  1. /* -*- c++ -*-
  2.    $Id: rtqueue.h,v 1.4 2001/08/15 18:35:00 kclan Exp $
  3. */
  4. #ifndef __ifqueue_h__
  5. #define __ifqueue_h__
  6. #include <packet.h>
  7. #include <agent.h>
  8. /*
  9.  * The maximum number of packets that we allow a routing protocol to buffer.
  10.  */
  11. #define RTQ_MAX_LEN     64      // packets
  12. /*
  13.  *  The maximum period of time that a routing protocol is allowed to buffer
  14.  *  a packet for.
  15.  */
  16. #define RTQ_TIMEOUT     30 // seconds
  17. class rtqueue : public Connector {
  18.  public:
  19.         rtqueue();
  20.         void            recv(Packet *, Handler*) { abort(); }
  21.         void            enque(Packet *p);
  22. inline int      command(int argc, const char * const* argv) 
  23.   { return Connector::command(argc, argv); }
  24.         /*
  25.          *  Returns a packet from the head of the queue.
  26.          */
  27.         Packet*         deque(void);
  28.         /*
  29.          * Returns a packet for destination "D".
  30.          */
  31.         Packet*         deque(nsaddr_t dst);
  32.   /*
  33.    * Finds whether a packet with destination dst exists in the queue
  34.    */
  35.         char            find(nsaddr_t dst);
  36.  private:
  37.         Packet*         remove_head();
  38.         void            purge(void);
  39. void findPacketWithDst(nsaddr_t dst, Packet*& p, Packet*& prev);
  40. void verifyQueue(void);
  41.         Packet          *head_;
  42.         Packet          *tail_;
  43.         int             len_;
  44.         int             limit_;
  45.         double          timeout_;
  46. };
  47. #endif /* __ifqueue_h__ */