IT++ Logo Newcom Logo

front_drop_queue.cpp

Go to the documentation of this file.
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
SourceForge Logo

Generated on Fri Jun 8 01:07:13 2007 for IT++ by Doxygen 1.5.2