|
xorp
|
00001 // -*- c-basic-offset: 4; tab-width: 8; indent-tabs-mode: t -*- 00002 00003 // Copyright (c) 2001-2011 XORP, Inc and Others 00004 // 00005 // This program is free software; you can redistribute it and/or modify 00006 // it under the terms of the GNU General Public License, Version 2, June 00007 // 1991 as published by the Free Software Foundation. Redistribution 00008 // and/or modification of this program under the terms of any other 00009 // version of the GNU General Public License is not permitted. 00010 // 00011 // This program is distributed in the hope that it will be useful, but 00012 // WITHOUT ANY WARRANTY; without even the implied warranty of 00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For more details, 00014 // see the GNU General Public License, Version 2, a copy of which can be 00015 // found in the XORP LICENSE.gpl file. 00016 // 00017 // XORP Inc, 2953 Bunker Hill Lane, Suite 204, Santa Clara, CA 95054, USA; 00018 // http://xorp.net 00019 00020 // $XORP: xorp/rip/packet_queue.hh,v 1.13 2008/10/02 21:58:16 bms Exp $ 00021 00022 #ifndef __RIP_PACKET_QUEUE_HH__ 00023 #define __RIP_PACKET_QUEUE_HH__ 00024 00025 #include "libxorp/xorp.h" 00026 00027 00028 00029 00030 #include "packets.hh" 00031 00032 00040 template <typename A> 00041 class PacketQueue 00042 { 00043 public: 00044 typedef list<const RipPacket<A>*> QueueRep; 00045 00046 public: 00047 PacketQueue(); 00048 ~PacketQueue(); 00049 00059 void enqueue_packet(const RipPacket<A>* pkt); 00060 00064 bool empty() const; 00065 00071 const RipPacket<A>* head() const; 00072 00076 void pop_head(); 00077 00084 bool drop_old(); 00085 00089 void flush_packets(); 00090 00094 void set_max_buffered_bytes(uint32_t mb); 00095 00099 uint32_t max_buffered_bytes() const; 00100 00104 uint32_t buffered_bytes() const; 00105 00109 uint32_t drop_count() const; 00110 00114 void reset_drop_count(); 00115 00116 protected: 00117 QueueRep _ready_packets; 00118 uint32_t _buffered_bytes; 00119 uint32_t _max_buffered_bytes; 00120 uint32_t _drops; 00121 }; 00122 00123 #endif // __RIP_PACKET_QUEUE_HH__