src/node/queue.cc
changeset 1866 e7dbcc4df546
parent 1506 3c8b23550e6a
child 1870 67b3d2dea3d5
equal deleted inserted replaced
1865:829dc1815014 1866:e7dbcc4df546
   119 {
   119 {
   120   NS_LOG_FUNCTION;
   120   NS_LOG_FUNCTION;
   121   Ptr<CompositeTraceResolver> resolver = Create<CompositeTraceResolver> ();
   121   Ptr<CompositeTraceResolver> resolver = Create<CompositeTraceResolver> ();
   122   resolver->AddSource ("enqueue", 
   122   resolver->AddSource ("enqueue", 
   123                        TraceDoc ("store packet in queue",
   123                        TraceDoc ("store packet in queue",
   124                                  "const Packet &", "packet queued"),
   124                                  "Ptr<const Packet>", "packet queued"),
   125                        m_traceEnqueue, QueueTraceType (QueueTraceType::ENQUEUE));
   125                        m_traceEnqueue, QueueTraceType (QueueTraceType::ENQUEUE));
   126   resolver->AddSource ("dequeue", 
   126   resolver->AddSource ("dequeue", 
   127                        TraceDoc ("remove packet from queue",
   127                        TraceDoc ("remove packet from queue",
   128                                  "const Packet &", "packet dequeued"),
   128                                  "Ptr<const Packet>", "packet dequeued"),
   129                        m_traceDequeue, QueueTraceType (QueueTraceType::DEQUEUE));
   129                        m_traceDequeue, QueueTraceType (QueueTraceType::DEQUEUE));
   130   resolver->AddSource ("drop", 
   130   resolver->AddSource ("drop", 
   131                        TraceDoc ("drop packet from queue", 
   131                        TraceDoc ("drop packet from queue", 
   132                                  "const Packet &", "packet dropped"),
   132                                  "Ptr<const Packet>", "packet dropped"),
   133                        m_traceDrop, QueueTraceType (QueueTraceType::DROP));
   133                        m_traceDrop, QueueTraceType (QueueTraceType::DROP));
   134   resolver->SetParentResolver (Object::GetTraceResolver ());
   134   resolver->SetParentResolver (Object::GetTraceResolver ());
   135   return resolver;
   135   return resolver;
   136 }
   136 }
   137 
   137 
   138 bool 
   138 bool 
   139 Queue::Enqueue (const Packet& p)
   139 Queue::Enqueue (Ptr<Packet> p)
   140 {
   140 {
   141   NS_LOG_FUNCTION;
   141   NS_LOG_FUNCTION;
   142   NS_LOG_PARAM ("(" << &p << ")");
   142   NS_LOG_PARAM ("(" << p << ")");
   143   NS_LOG_LOGIC ("m_traceEnqueue (p)");
   143   NS_LOG_LOGIC ("m_traceEnqueue (p)");
   144 
   144 
   145   m_traceEnqueue (p);
   145   m_traceEnqueue (p);
   146 
   146 
   147   bool retval = DoEnqueue (p);
   147   bool retval = DoEnqueue (p);
   148   if (retval)
   148   if (retval)
   149     {
   149     {
   150       m_nBytes += p.GetSize ();
   150       m_nBytes += p->GetSize ();
   151       m_nPackets++;
   151       m_nPackets++;
   152     }
   152     }
   153   return retval;
   153   return retval;
   154 }
   154 }
   155 
   155 
   156 bool
   156 Ptr<Packet>
   157 Queue::Dequeue (Packet &p)
   157 Queue::Dequeue (void)
   158 {
   158 {
   159   NS_LOG_FUNCTION;
   159   NS_LOG_FUNCTION;
   160   NS_LOG_PARAM ("(" << &p << ")");
   160 
   161 
   161   Ptr<Packet> packet = DoDequeue ();
   162   bool retval = DoDequeue (p);
   162 
   163 
   163   if (packet != 0)
   164   if (retval)
       
   165     {
   164     {
   166       m_nBytes -= p.GetSize ();
   165       m_nBytes -= packet->GetSize ();
   167       m_nPackets--;
   166       m_nPackets--;
   168 
   167 
   169       NS_ASSERT (m_nBytes >= 0);
   168       NS_ASSERT (m_nBytes >= 0);
   170       NS_ASSERT (m_nPackets >= 0);
   169       NS_ASSERT (m_nPackets >= 0);
   171 
   170 
   172       NS_LOG_LOGIC("m_traceDequeue (p)");
   171       NS_LOG_LOGIC("m_traceDequeue (p)");
   173 
   172 
   174       const Packet packet = p;
       
   175       m_traceDequeue (packet);
   173       m_traceDequeue (packet);
   176     }
   174     }
   177 
   175   return packet;
   178   return retval;
       
   179 }
   176 }
   180 
   177 
   181 void
   178 void
   182 Queue::DequeueAll (void)
   179 Queue::DequeueAll (void)
   183 {
   180 {
   184   NS_LOG_FUNCTION;
   181   NS_LOG_FUNCTION;
   185   NS_ASSERT_MSG (0, "Don't know what to do with dequeued packets!");
   182   NS_ASSERT_MSG (0, "Don't know what to do with dequeued packets!");
   186 }
   183 }
   187 
   184 
   188 bool
   185 Ptr<Packet>
   189 Queue::Peek (Packet &p)
   186 Queue::Peek (void)
   190 {
   187 {
   191   NS_LOG_FUNCTION;
   188   NS_LOG_FUNCTION;
   192   NS_LOG_PARAM ("(" << &p << ")");
   189   return DoPeek ();
   193   return DoPeek (p);
       
   194 }
   190 }
   195 
   191 
   196 
   192 
   197 uint32_t 
   193 uint32_t 
   198 Queue::GetNPackets (void)
   194 Queue::GetNPackets (void)
   259   m_nTotalDroppedBytes = 0;
   255   m_nTotalDroppedBytes = 0;
   260   m_nTotalDroppedPackets = 0;
   256   m_nTotalDroppedPackets = 0;
   261 }
   257 }
   262 
   258 
   263 void
   259 void
   264 Queue::Drop (const Packet& p)
   260 Queue::Drop (Ptr<Packet> p)
   265 {
   261 {
   266   NS_LOG_FUNCTION;
   262   NS_LOG_FUNCTION;
   267   NS_LOG_PARAM ("(" << &p << ")");
   263   NS_LOG_PARAM ("(" << p << ")");
   268 
   264 
   269   m_nTotalDroppedPackets++;
   265   m_nTotalDroppedPackets++;
   270   m_nTotalDroppedBytes += p.GetSize ();
   266   m_nTotalDroppedBytes += p->GetSize ();
   271 
   267 
   272   NS_LOG_LOGIC ("m_traceDrop (p)");
   268   NS_LOG_LOGIC ("m_traceDrop (p)");
   273   m_traceDrop (p);
   269   m_traceDrop (p);
   274 }
   270 }
   275 
   271