re-implement tracing using Attributes.
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Sun, 02 Mar 2008 21:57:51 +0100
changeset 2534 0dd75c81244e
parent 2533 80cdc3eec057
child 2535 08297f16760f
re-implement tracing using Attributes.
src/node/queue.cc
src/node/queue.h
--- a/src/node/queue.cc	Sun Mar 02 21:57:28 2008 +0100
+++ b/src/node/queue.cc	Sun Mar 02 21:57:51 2008 +0100
@@ -18,91 +18,20 @@
  */
 
 #include "ns3/log.h"
-#include "ns3/composite-trace-resolver.h"
-#include "ns3/default-value.h"
-#include "ns3/type-id-default-value.h"
 #include "queue.h"
 
 NS_LOG_COMPONENT_DEFINE ("Queue");
 
 namespace ns3 {
 
-static TypeIdDefaultValue g_interfaceIdDefaultValue ("Queue", "Packet Queue",
-                                                          Queue::GetTypeId (), "DropTailQueue");
-
 NS_OBJECT_ENSURE_REGISTERED (Queue);
 
-
-std::string 
-QueueTraceType::GetTypeName (void) const
-{
-  NS_LOG_FUNCTION;
-  return "ns3::QueueTraceType";
-}
-
-uint16_t 
-QueueTraceType::GetUid (void)
-{
-  NS_LOG_FUNCTION;
-  static uint16_t uid = AllocateUid<QueueTraceType> ("QueueTraceType");
-  return uid;
-}
-
-QueueTraceType::QueueTraceType ()
-  : m_type (QueueTraceType::ENQUEUE)
-{
-  NS_LOG_FUNCTION;
-}
-
-QueueTraceType::QueueTraceType (enum Type type)
-  : m_type (type)
-{
-  NS_LOG_FUNCTION;
-}
-
-bool 
-QueueTraceType::IsEnqueue (void) const
-{
-  NS_LOG_FUNCTION;
-  return m_type == ENQUEUE;
-}
-
-bool 
-QueueTraceType::IsDequeue (void) const
-{
-  NS_LOG_FUNCTION;
-  return m_type == DEQUEUE;
-}
-
-bool 
-QueueTraceType::IsDrop (void) const
-{
-  NS_LOG_FUNCTION;
-  return m_type == DROP;
-}
-
-void 
-QueueTraceType::Print (std::ostream &os) const
-{
-  os << "queue-";
-  switch (m_type) {
-  case QueueTraceType::ENQUEUE:
-    os << "enqueue";
-    break;
-  case QueueTraceType::DEQUEUE:
-    os << "dequeue";
-    break;
-  case QueueTraceType::DROP:
-    os << "drop";
-    break;
-  }
-}
-
 TypeId 
 Queue::GetTypeId (void)
 {
   static TypeId tid = TypeId ("Queue")
-    .SetParent<Object> ();
+    .SetParent<Object> ()
+    ;
   return tid;
 }
 
@@ -122,26 +51,6 @@
   NS_LOG_FUNCTION;
 }
 
-Ptr<TraceResolver>
-Queue::GetTraceResolver (void) const
-{
-  NS_LOG_FUNCTION;
-  Ptr<CompositeTraceResolver> resolver = Create<CompositeTraceResolver> ();
-  resolver->AddSource ("enqueue", 
-                       TraceDoc ("store packet in queue",
-                                 "Ptr<const Packet>", "packet queued"),
-                       m_traceEnqueue, QueueTraceType (QueueTraceType::ENQUEUE));
-  resolver->AddSource ("dequeue", 
-                       TraceDoc ("remove packet from queue",
-                                 "Ptr<const Packet>", "packet dequeued"),
-                       m_traceDequeue, QueueTraceType (QueueTraceType::DEQUEUE));
-  resolver->AddSource ("drop", 
-                       TraceDoc ("drop packet from queue", 
-                                 "Ptr<const Packet>", "packet dropped"),
-                       m_traceDrop, QueueTraceType (QueueTraceType::DROP));
-  resolver->SetParentResolver (Object::GetTraceResolver ());
-  return resolver;
-}
 
 bool 
 Queue::Enqueue (Ptr<Packet> p)
@@ -279,13 +188,4 @@
   m_traceDrop (p);
 }
 
-Ptr<Queue>
-Queue::CreateDefault (void)
-{
-  NS_LOG_FUNCTION;
-  TypeId interfaceId = g_interfaceIdDefaultValue.GetValue ();
-  Ptr<Queue> queue = interfaceId.CreateObject ()->GetObject<Queue> ();
-  return queue;
-}
-
-}; // namespace ns3
+} // namespace ns3
--- a/src/node/queue.h	Sun Mar 02 21:57:28 2008 +0100
+++ b/src/node/queue.h	Sun Mar 02 21:57:51 2008 +0100
@@ -29,47 +29,10 @@
 #include <list>
 #include "ns3/packet.h"
 #include "ns3/object.h"
-#include "ns3/callback-trace-source.h"
-#include "ns3/trace-resolver.h"
-#include "ns3/trace-context-element.h"
+#include "ns3/traced-callback.h"
 
 namespace ns3 {
 
-class StringEnumDefaultValue;
-
-/**
- * \brief hold in a TraceContext the type of a trace source 
- */
-class QueueTraceType : public TraceContextElement
-{
-public:
-  enum Type {
-    ENQUEUE,
-    DEQUEUE,
-    DROP
-  };
-  static uint16_t GetUid (void);
-  QueueTraceType ();
-  QueueTraceType (enum Type type);
-  /**
-   * \returns true if this is an enqueue event, false otherwise.
-   */
-  bool IsEnqueue (void) const;
-  /**
-   * \returns true if this is a dequeue event, false otherwise.
-   */
-  bool IsDequeue (void) const;
-  /**
-   * \returns true if this is a drop event, false otherwise.
-   */
-  bool IsDrop (void) const;
-  void Print (std::ostream &os) const;
-  std::string GetTypeName (void) const;
-private:
-  enum Type m_type;
-};
-
-
 /**
  * \brief Abstract base class for packet Queues
  * 
@@ -178,14 +141,13 @@
   virtual Ptr<Packet> DoPeek (void) const = 0;
 
 protected:
-  Ptr<TraceResolver> GetTraceResolver (void) const;
   // called by subclasses to notify parent of packet drops.
   void Drop (Ptr<Packet> packet);
 
 private:
-  CallbackTraceSource<Ptr<const Packet> > m_traceEnqueue;
-  CallbackTraceSource<Ptr<const Packet> > m_traceDequeue;
-  CallbackTraceSource<Ptr<const Packet> > m_traceDrop;
+  TracedCallback<Ptr<const Packet> > m_traceEnqueue;
+  TracedCallback<Ptr<const Packet> > m_traceDequeue;
+  TracedCallback<Ptr<const Packet> > m_traceDrop;
 
   uint32_t m_nBytes;
   uint32_t m_nTotalReceivedBytes;
@@ -193,13 +155,6 @@
   uint32_t m_nTotalReceivedPackets;
   uint32_t m_nTotalDroppedBytes;
   uint32_t m_nTotalDroppedPackets;
-
-public:
-  /**
-   * A factory method to generate a preconfigured default Queue for use
-   * \return a Queue smart pointer that is the default Queue type defined
-   */
-  static Ptr<Queue> CreateDefault (void);
 };
 
 }; // namespace ns3