src/node/queue.h
changeset 345 47b41507a45a
parent 337 42102ed8ee3c
child 375 de64c081a2e0
equal deleted inserted replaced
344:b547ec7dbbc1 345:47b41507a45a
    25 #ifndef QUEUE_H
    25 #ifndef QUEUE_H
    26 #define QUEUE_H
    26 #define QUEUE_H
    27 
    27 
    28 #include <string>
    28 #include <string>
    29 #include "ns3/packet.h"
    29 #include "ns3/packet.h"
    30 #include "ns3/callback-tracer.h"
    30 #include "ns3/callback-trace-source.h"
    31 #include "ns3/trace-container.h"
    31 #include "ns3/trace-resolver.h"
    32 
    32 
    33 namespace ns3 {
    33 namespace ns3 {
    34 
    34 
    35 class Queue
    35 class Queue
    36 {
    36 {
    37 public:
    37 public:
    38   Queue (std::string const &name);
    38   enum TraceType {
       
    39     ENQUEUE,
       
    40     DEQUEUE,
       
    41     DROP,
       
    42   };
       
    43   Queue ();
    39   virtual ~Queue ();
    44   virtual ~Queue ();
    40 
    45 
       
    46   TraceResolver *CreateTraceResolver (TraceContext const &context);
       
    47 
       
    48   bool IsEmpty (void);
    41   bool Enqueue (const Packet& p);
    49   bool Enqueue (const Packet& p);
    42   bool Dequeue (Packet &p);
    50   bool Dequeue (Packet &p);
    43 
    51 
    44   void DequeueAll (void);
    52   void DequeueAll (void);
    45   uint32_t GetNPackets (void);
    53   uint32_t GetNPackets (void);
    46   uint32_t GetNBytes (void);
    54   uint32_t GetNBytes (void);
    47 
       
    48   bool IsEmpty (void);
       
    49 
    55 
    50   uint32_t GetTotalReceivedBytes (void);
    56   uint32_t GetTotalReceivedBytes (void);
    51   uint32_t GetTotalReceivedPackets (void);
    57   uint32_t GetTotalReceivedPackets (void);
    52   uint32_t GetTotalDroppedBytes (void);
    58   uint32_t GetTotalDroppedBytes (void);
    53   uint32_t GetTotalDroppedPackets (void);
    59   uint32_t GetTotalDroppedPackets (void);
    83   virtual bool DoDequeue (Packet &p) = 0;
    89   virtual bool DoDequeue (Packet &p) = 0;
    84 
    90 
    85 protected:
    91 protected:
    86   // called by subclasses to notify parent of packet drops.
    92   // called by subclasses to notify parent of packet drops.
    87   void Drop (const Packet& p);
    93   void Drop (const Packet& p);
    88   void QueueRegisterTraces (TraceContainer &container);
       
    89 
    94 
    90 private:
    95 private:
    91   CallbackTracer<std::string const &, const Packet &> m_traceEnqueue;
    96   CallbackTraceSource<const Packet &> m_traceEnqueue;
    92   CallbackTracer<std::string const &, const Packet &> m_traceDequeue;
    97   CallbackTraceSource<const Packet &> m_traceDequeue;
    93   CallbackTracer<std::string const &, const Packet &> m_traceDrop;
    98   CallbackTraceSource<const Packet &> m_traceDrop;
    94 
    99 
    95   uint32_t m_nBytes;
   100   uint32_t m_nBytes;
    96   uint32_t m_nTotalReceivedBytes;
   101   uint32_t m_nTotalReceivedBytes;
    97   uint32_t m_nPackets;
   102   uint32_t m_nPackets;
    98   uint32_t m_nTotalReceivedPackets;
   103   uint32_t m_nTotalReceivedPackets;
    99   uint32_t m_nTotalDroppedBytes;
   104   uint32_t m_nTotalDroppedBytes;
   100   uint32_t m_nTotalDroppedPackets;
   105   uint32_t m_nTotalDroppedPackets;
   101 
       
   102   std::string m_name;
       
   103 
       
   104 
   106 
   105 #if 0
   107 #if 0
   106   // Static methods to manage queue default
   108   // Static methods to manage queue default
   107   // Set desired queue default
   109   // Set desired queue default
   108   static void    Default(const Queue& q);
   110   static void    Default(const Queue& q);