00001 00033 #include <itpp/protocol/front_drop_queue.h> 00034 00035 00036 namespace itpp { 00037 00038 void Front_Drop_Queue::push(Packet *packet) 00039 { 00040 if (debug) { 00041 std::cout << "Front_Drop_Queue::push_packet" 00042 // << " byte_size=" << packet->bit_size()/8 00043 << " ptr=" << packet 00044 << " time=" << Event_Queue::now() << std::endl; 00045 } 00046 00047 Packet *hol_packet; 00048 while ((!std::queue<Packet*>::empty()) && 00049 ((8*bytes_in_queue + packet->bit_size()) > 8*max_bytes_in_queue)) { 00050 hol_packet = std::queue<Packet*>::front(); 00051 Front_Drop_Queue::pop(); 00052 delete hol_packet; 00053 00054 // TTCPPacket *tcp_packet = (TTCPPacket *) hol_packet; 00055 // delete tcp_packet; 00056 00057 if (debug) { 00058 std::cout << "Link_With_Input_Q::received_packet, " 00059 << "Packet Dropped, buffer overflow." 00060 << std::endl; 00061 } 00062 } 00063 00064 bytes_in_queue += packet->bit_size()/8; 00065 std::queue<Packet*>::push(packet); 00066 00067 } 00068 00069 void Front_Drop_Queue::pop() 00070 { 00071 Packet *hol_packet; 00072 hol_packet = std::queue<Packet*>::front(); 00073 bytes_in_queue -= (hol_packet->bit_size()/8); 00074 if (debug) { 00075 std::cout << "Front_Drop_Queue::pop_packet" 00076 << " ptr=" << hol_packet 00077 << " time=" << Event_Queue::now() << std::endl; 00078 } 00079 std::queue<Packet*>::pop(); 00080 00081 } 00082 00083 } // namespace itpp
Generated on Thu Apr 19 14:19:55 2007 for IT++ by Doxygen 1.4.6