IT++ Logo

front_drop_queue.cpp

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

Generated on Sun Jul 26 08:54:57 2009 for IT++ by Doxygen 1.5.9