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