re-implement tracing using Attributes.
--- 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