convert TraceResolver * to Ptr<TraceResolver>

This commit is contained in:
Mathieu Lacage
2007-08-10 15:47:13 +02:00
parent 6b64959309
commit 0b34c336f7
33 changed files with 86 additions and 81 deletions

View File

@@ -48,7 +48,7 @@ public:
* to provide a method named CreateTraceResolver which takes as
* only argument a reference to a const TraceContext and returns
* a pointer to a TraceResolver. i.e. the signature is:
* TraceResolver * (*) (TraceContext const &)
* Ptr<TraceResolver> (*) (void)
*/
ArrayTraceResolver (Callback<uint32_t> getSize,
Callback<T, uint32_t> get);
@@ -83,9 +83,8 @@ ArrayTraceResolver<T,INDEX>::Connect (std::string path, CallbackBase const &cb,
TraceContext tmp = context;
INDEX index = i;
tmp.Add (index);
TraceResolver *resolver = m_get (i)->CreateTraceResolver ();
Ptr<TraceResolver> resolver = m_get (i)->CreateTraceResolver ();
resolver->Connect (subpath, cb, tmp);
delete resolver;
}
}
}
@@ -99,9 +98,8 @@ ArrayTraceResolver<T,INDEX>::Disconnect (std::string path, CallbackBase const &c
{
for (uint32_t i = 0; i < m_getSize (); i++)
{
TraceResolver *resolver = m_get (i)->CreateTraceResolver ();
Ptr<TraceResolver> resolver = m_get (i)->CreateTraceResolver ();
resolver->Disconnect (subpath, cb);
delete resolver;
}
}
}

View File

@@ -33,14 +33,14 @@ CompositeTraceResolver::~CompositeTraceResolver ()
void
CompositeTraceResolver::Add (std::string name,
Callback<TraceResolver *> createResolver)
Callback<Ptr<TraceResolver> > createResolver)
{
DoAdd (name, createResolver, TraceContext ());
}
void
CompositeTraceResolver::DoAdd (std::string name,
Callback<TraceResolver *> createResolver,
Callback<Ptr<TraceResolver> > createResolver,
TraceContext const &context)
{
struct CallbackTraceSourceItem item;
@@ -125,7 +125,7 @@ CompositeTraceResolver::OperationOne (std::string subpath,
const TraceContext &context,
enum Operation op)
{
TraceResolver *resolver = i->createResolver ();
Ptr<TraceResolver> resolver = i->createResolver ();
switch (op) {
case CONNECT: {
NS_DEBUG ("connect to path="<<subpath<<" name="<<i->name);
@@ -137,7 +137,6 @@ CompositeTraceResolver::OperationOne (std::string subpath,
resolver->Disconnect (subpath, cb);
break;
}
delete resolver;
}
void
@@ -204,7 +203,7 @@ public:
private:
void TraceDouble (TraceContext const &context, double v);
void TraceInt (TraceContext const &context, int v);
TraceResolver *CreateSubResolver ();
Ptr<TraceResolver> CreateSubResolver ();
bool m_gotDoubleA;
@@ -244,10 +243,10 @@ CompositeTraceResolverTest::TraceInt (TraceContext const &context, int v)
m_gotInt = true;
}
TraceResolver *
Ptr<TraceResolver>
CompositeTraceResolverTest::CreateSubResolver (void)
{
CompositeTraceResolver *subresolver = new CompositeTraceResolver ();
Ptr<CompositeTraceResolver> subresolver = Create<CompositeTraceResolver> ();
subresolver->Add ("trace-int", m_traceInt,
SubTraceSourceTest (SubTraceSourceTest::INT));
return subresolver;

View File

@@ -22,6 +22,7 @@
#define COMPOSITE_TRACE_RESOLVER_H
#include "ns3/callback.h"
#include "ns3/ptr.h"
#include "trace-resolver.h"
#include "callback-trace-source.h"
#include "uv-trace-source.h"
@@ -109,7 +110,7 @@ public:
*/
template <typename T>
void Add (std::string name,
Callback<TraceResolver *> createResolver,
Callback<Ptr<TraceResolver> > createResolver,
T const &context);
/**
@@ -122,7 +123,7 @@ public:
* will be invoked to create the child trace resolver.
*/
void Add (std::string name,
Callback<TraceResolver *> createResolver);
Callback<Ptr<TraceResolver> > createResolver);
virtual void Connect (std::string path, CallbackBase const &cb, const TraceContext &context);
virtual void Disconnect (std::string path, CallbackBase const &cb);
@@ -130,7 +131,7 @@ private:
struct CallbackTraceSourceItem
{
std::string name;
Callback<TraceResolver *> createResolver;
Callback<Ptr<TraceResolver> > createResolver;
TraceContext context;
};
typedef std::list<struct CallbackTraceSourceItem> TraceItems;
@@ -143,9 +144,9 @@ private:
void DoAddTraceSource (std::string name,
SOURCE &traceSource, CONTEXT const &context);
template <typename SOURCE>
static TraceResolver *CreateTerminalTraceResolver (SOURCE *trace);
static Ptr<TraceResolver> CreateTerminalTraceResolver (SOURCE *trace);
void DoAdd (std::string name,
Callback<TraceResolver *> createResolver,
Callback<Ptr<TraceResolver> > createResolver,
TraceContext const &context);
void OperationOne (std::string subpath,
TraceItems::const_iterator i,
@@ -170,9 +171,9 @@ void
CompositeTraceResolver::DoAddTraceSource (std::string name,
SOURCE &traceSource, CONTEXT const &context)
{
TraceResolver *(*create) (SOURCE *trace);
Ptr<TraceResolver> (*create) (SOURCE *trace);
create = &CompositeTraceResolver::CreateTerminalTraceResolver<SOURCE>;
Callback<TraceResolver *> createResolver =
Callback<Ptr<TraceResolver> > createResolver =
MakeBoundCallback (create, &traceSource);
TraceContext ctx;
@@ -181,10 +182,10 @@ CompositeTraceResolver::DoAddTraceSource (std::string name,
}
template <typename SOURCE>
TraceResolver *
Ptr<TraceResolver>
CompositeTraceResolver::CreateTerminalTraceResolver (SOURCE *traceSource)
{
return new TerminalTraceResolver<SOURCE> (*traceSource);
return Create<TerminalTraceResolver<SOURCE> > (traceSource);
}
@@ -224,7 +225,7 @@ CompositeTraceResolver::Add (std::string name,
template <typename T>
void
CompositeTraceResolver::Add (std::string name,
Callback<TraceResolver *> createResolver,
Callback<Ptr<TraceResolver> > createResolver,
T const &context)
{
TraceContext ctx;

View File

@@ -19,6 +19,9 @@
* Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
*/
#include "trace-resolver.h"
#include "ns3/debug.h"
NS_DEBUG_COMPONENT_DEFINE ("TraceResolver");
namespace ns3 {
@@ -40,6 +43,7 @@ TraceResolver::Unref (void)
m_count--;
if (m_count == 0)
{
NS_DEBUG ("delete "<<this);
delete this;
}
}

View File

@@ -27,24 +27,24 @@ namespace ns3 {
void
TraceRoot::Connect (std::string path, CallbackBase const &cb)
{
TraceResolver *resolver = GetComposite ();
Ptr<TraceResolver> resolver = GetComposite ();
resolver->Connect (path, cb, TraceContext ());
}
void
TraceRoot::Disconnect (std::string path, CallbackBase const &cb)
{
TraceResolver *resolver = GetComposite ();
Ptr<TraceResolver> resolver = GetComposite ();
resolver->Disconnect (path, cb);
}
void
TraceRoot::Register (std::string name,
Callback<TraceResolver *> createResolver)
Callback<Ptr<TraceResolver> > createResolver)
{
CompositeTraceResolver *resolver = GetComposite ();
Ptr<CompositeTraceResolver> resolver = GetComposite ();
resolver->Add (name, createResolver);
}
CompositeTraceResolver *
Ptr<CompositeTraceResolver>
TraceRoot::GetComposite (void)
{
static CompositeTraceResolver resolver;

View File

@@ -325,9 +325,9 @@ public:
static void Connect (std::string path, CallbackBase const &cb);
static void Disconnect (std::string path, CallbackBase const &cb);
static void Register (std::string name,
Callback<TraceResolver *> createResolver);
Callback<Ptr<TraceResolver> > createResolver);
private:
static CompositeTraceResolver *GetComposite (void);
static Ptr<CompositeTraceResolver> GetComposite (void);
};
}// namespace ns3

View File

@@ -449,10 +449,10 @@ CsmaCdNetDevice::TransmitReadyEvent (void)
}
}
TraceResolver *
Ptr<TraceResolver>
CsmaCdNetDevice::DoCreateTraceResolver (void)
{
CompositeTraceResolver *resolver = new CompositeTraceResolver ();
Ptr<CompositeTraceResolver> resolver = Create<CompositeTraceResolver> ();
resolver->Add ("queue",
MakeCallback (&Queue::CreateTraceResolver,
PeekPointer (m_queue)));

View File

@@ -311,7 +311,7 @@ private:
* (NOT TESTED)
* @see class TraceResolver
*/
virtual TraceResolver *DoCreateTraceResolver (void);
virtual Ptr<TraceResolver> DoCreateTraceResolver (void);
/**
* Aborts the transmission of the current packet

View File

@@ -188,9 +188,10 @@ void PointToPointNetDevice::TransmitComplete (void)
TransmitStart(p);
}
TraceResolver* PointToPointNetDevice::DoCreateTraceResolver (void)
Ptr<TraceResolver>
PointToPointNetDevice::DoCreateTraceResolver (void)
{
CompositeTraceResolver *resolver = new CompositeTraceResolver ();
Ptr<CompositeTraceResolver> resolver = Create<CompositeTraceResolver> ();
resolver->Add ("queue",
MakeCallback (&Queue::CreateTraceResolver, PeekPointer (m_queue)));
resolver->Add ("rx",

View File

@@ -243,7 +243,7 @@ private:
*
* @see class TraceResolver
*/
virtual TraceResolver* DoCreateTraceResolver (void);
virtual Ptr<TraceResolver> DoCreateTraceResolver (void);
virtual bool DoNeedsArp (void) const;
/**
* Enumeration of the states of the transmit machine of the net device.

View File

@@ -40,10 +40,10 @@ ArpIpv4Interface::ArpIpv4Interface (Ptr<Node> node, Ptr<NetDevice> device)
ArpIpv4Interface::~ArpIpv4Interface ()
{}
TraceResolver *
Ptr<TraceResolver>
ArpIpv4Interface::DoCreateTraceResolver (void)
{
CompositeTraceResolver *resolver = new CompositeTraceResolver ();
Ptr<CompositeTraceResolver> resolver = Create<CompositeTraceResolver> ();
if (GetDevice () != 0)
{
resolver->Add ("netdevice",

View File

@@ -44,7 +44,7 @@ class ArpIpv4Interface : public Ipv4Interface
private:
virtual void SendTo (Packet p, Ipv4Address dest);
virtual TraceResolver *DoCreateTraceResolver (void);
virtual Ptr<TraceResolver> DoCreateTraceResolver (void);
Ptr<Node> m_node;
};

View File

@@ -58,10 +58,10 @@ ArpL3Protocol::DoDispose (void)
Object::DoDispose ();
}
TraceResolver *
Ptr<TraceResolver>
ArpL3Protocol::CreateTraceResolver (void)
{
return new EmptyTraceResolver ();
return Create<EmptyTraceResolver> ();
}
ArpCache *

View File

@@ -49,7 +49,7 @@ public:
ArpL3Protocol (Ptr<Node> node);
virtual ~ArpL3Protocol ();
virtual TraceResolver *CreateTraceResolver (void);
virtual Ptr<TraceResolver> CreateTraceResolver (void);
/**
* \brief Recieve a packet
*/

View File

@@ -22,6 +22,7 @@
#include "ipv4-interface.h"
#include "ns3/ipv4-address.h"
#include "ns3/net-device.h"
#include "ns3/trace-resolver.h"
namespace ns3 {
@@ -45,7 +46,7 @@ Ipv4Interface::GetDevice (void) const
return m_netdevice;
}
TraceResolver *
Ptr<TraceResolver>
Ipv4Interface::CreateTraceResolver (void)
{
return DoCreateTraceResolver ();

View File

@@ -83,7 +83,7 @@ public:
* This method will delegate the work to the private DoCreateTraceResolver
* method which is supposed to be implemented by subclasses.
*/
TraceResolver *CreateTraceResolver (void);
Ptr<TraceResolver> CreateTraceResolver (void);
/**
* \returns the underlying NetDevice. This method can return
* zero if this interface has no associated NetDevice.
@@ -153,7 +153,7 @@ public:
private:
virtual void SendTo (Packet p, Ipv4Address dest) = 0;
virtual TraceResolver *DoCreateTraceResolver (void) = 0;
virtual Ptr<TraceResolver> DoCreateTraceResolver (void) = 0;
Ptr<NetDevice> m_netdevice;
bool m_ifup;
Ipv4Address m_address;

View File

@@ -153,10 +153,10 @@ Ipv4L3Protocol::SetupLoopback (void)
interface->SetUp ();
}
TraceResolver *
Ptr<TraceResolver>
Ipv4L3Protocol::CreateTraceResolver (void)
{
CompositeTraceResolver *resolver = new CompositeTraceResolver ();
Ptr<CompositeTraceResolver> resolver = Create<CompositeTraceResolver> ();
resolver->Add ("tx", m_txTrace, Ipv4L3ProtocolTraceContextElement(Ipv4L3ProtocolTraceContextElement::TX));
resolver->Add ("rx", m_rxTrace, Ipv4L3ProtocolTraceContextElement(Ipv4L3ProtocolTraceContextElement::RX));
resolver->Add ("drop", m_dropTrace, Ipv4L3ProtocolTraceContextElement (Ipv4L3ProtocolTraceContextElement::DROP));
@@ -165,11 +165,11 @@ Ipv4L3Protocol::CreateTraceResolver (void)
return resolver;
}
TraceResolver *
Ptr<TraceResolver>
Ipv4L3Protocol::InterfacesCreateTraceResolver (void) const
{
ArrayTraceResolver<Ipv4Interface *, Ipv4l3ProtocolInterfaceIndex> *resolver =
new ArrayTraceResolver<Ipv4Interface *,Ipv4l3ProtocolInterfaceIndex>
Ptr<ArrayTraceResolver<Ipv4Interface *, Ipv4l3ProtocolInterfaceIndex> >resolver =
Create<ArrayTraceResolver<Ipv4Interface *,Ipv4l3ProtocolInterfaceIndex> >
(MakeCallback (&Ipv4L3Protocol::GetNInterfaces, this),
MakeCallback (&Ipv4L3Protocol::GetInterface, this));
return resolver;

View File

@@ -92,7 +92,7 @@ public:
* performed in this object. The caller must
* delete the returned object.
*/
virtual TraceResolver *CreateTraceResolver (void);
virtual Ptr<TraceResolver> CreateTraceResolver (void);
/**
* \param ttl default ttl to use
@@ -189,7 +189,7 @@ private:
void ForwardUp (Packet p, Ipv4Header const&ip);
uint32_t AddIpv4Interface (Ipv4Interface *interface);
void SetupLoopback (void);
TraceResolver *InterfacesCreateTraceResolver (void) const;
Ptr<TraceResolver> InterfacesCreateTraceResolver (void) const;
typedef std::list<Ipv4Interface*> Ipv4InterfaceList;
typedef std::list< std::pair< int, Ptr<Ipv4RoutingProtocol> > > Ipv4RoutingProtocolList;

View File

@@ -78,10 +78,10 @@ Ipv4L4Demux::DoDispose (void)
Object::DoDispose ();
}
TraceResolver *
Ptr<TraceResolver>
Ipv4L4Demux::CreateTraceResolver (void)
{
CompositeTraceResolver *resolver = new CompositeTraceResolver ();
Ptr<CompositeTraceResolver> resolver = Create<CompositeTraceResolver> ();
for (L4List_t::const_iterator i = m_protocols.begin(); i != m_protocols.end(); ++i)
{
Ptr<Ipv4L4Protocol> protocol = *i;

View File

@@ -66,7 +66,7 @@ public:
* performed in this object. The caller must
* delete the returned object.
*/
TraceResolver *CreateTraceResolver (void);
Ptr<TraceResolver> CreateTraceResolver (void);
/**
* \param protocol a template for the protocol to add to this L4 Demux.
* \returns the L4Protocol effectively added.

View File

@@ -59,7 +59,7 @@ public:
*/
int GetVersion() const;
virtual TraceResolver *CreateTraceResolver () = 0;
virtual Ptr<TraceResolver> CreateTraceResolver () = 0;
/**
* \param p packet to forward up

View File

@@ -34,10 +34,10 @@ Ipv4LoopbackInterface::Ipv4LoopbackInterface (Ptr<Node> node)
Ipv4LoopbackInterface::~Ipv4LoopbackInterface ()
{}
TraceResolver *
Ptr<TraceResolver>
Ipv4LoopbackInterface::DoCreateTraceResolver (void)
{
return new EmptyTraceResolver ();
return Create<EmptyTraceResolver> ();
}
void

View File

@@ -43,7 +43,7 @@ class Ipv4LoopbackInterface : public Ipv4Interface
private:
virtual void SendTo (Packet p, Ipv4Address dest);
virtual TraceResolver *DoCreateTraceResolver (void);
virtual Ptr<TraceResolver> DoCreateTraceResolver (void);
Ptr<Node> m_node;
};

View File

@@ -45,10 +45,10 @@ UdpL4Protocol::UdpL4Protocol (Ptr<Node> node)
UdpL4Protocol::~UdpL4Protocol ()
{}
TraceResolver *
Ptr<TraceResolver>
UdpL4Protocol::CreateTraceResolver (void)
{
return new EmptyTraceResolver ();
return Create<EmptyTraceResolver> ();
}
void

View File

@@ -49,7 +49,7 @@ public:
UdpL4Protocol (Ptr<Node> node);
virtual ~UdpL4Protocol ();
virtual TraceResolver *CreateTraceResolver (void);
virtual Ptr<TraceResolver> CreateTraceResolver (void);
/**
* \return A smart Socket pointer to a UdpSocket, allocated by this instance
* of the UDP protocol

View File

@@ -23,6 +23,7 @@
#include "ns3/assert.h"
#include "ns3/object.h"
#include "ns3/debug.h"
#include "ns3/trace-resolver.h"
#include "channel.h"
@@ -183,7 +184,7 @@ NetDevice::Send(Packet& p, const Address& dest, uint16_t protocolNumber)
}
}
TraceResolver *
Ptr<TraceResolver>
NetDevice::CreateTraceResolver (void)
{
return DoCreateTraceResolver ();

View File

@@ -69,7 +69,7 @@ public:
* performed in this object. The caller must
* delete the returned object.
*/
TraceResolver *CreateTraceResolver (void);
Ptr<TraceResolver> CreateTraceResolver (void);
/**
* \return the channel this NetDevice is connected to. The value
@@ -290,7 +290,7 @@ public:
*
* Subclasses must implement this method.
*/
virtual TraceResolver *DoCreateTraceResolver (void) = 0;
virtual Ptr<TraceResolver> DoCreateTraceResolver (void) = 0;
/**
* \returns the channel associated to this NetDevice.
*

View File

@@ -76,7 +76,7 @@ public:
uint32_t Add (Ptr<Node> node);
NodeList::Iterator Begin (void);
NodeList::Iterator End (void);
TraceResolver *CreateTraceResolver (void);
Ptr<TraceResolver> CreateTraceResolver (void);
Ptr<Node> GetNode (uint32_t n);
uint32_t GetNNodes (void);
@@ -130,11 +130,11 @@ NodeListPriv::GetNode (uint32_t n)
}
TraceResolver *
Ptr<TraceResolver>
NodeListPriv::CreateTraceResolver (void)
{
ArrayTraceResolver<Ptr<Node>, NodeListIndex> *resolver =
new ArrayTraceResolver<Ptr<Node>, NodeListIndex>
Ptr<ArrayTraceResolver<Ptr<Node>, NodeListIndex> >resolver =
Create<ArrayTraceResolver<Ptr<Node>, NodeListIndex> >
(MakeCallback (&NodeListPriv::GetNNodes, this),
MakeCallback (&NodeListPriv::GetNode, this));
return resolver;
@@ -164,7 +164,7 @@ NodeList::End (void)
{
return SimulationSingleton<NodeListPriv>::Get ()->End ();
}
TraceResolver *
Ptr<TraceResolver>
NodeList::CreateTraceResolver (void)
{
return SimulationSingleton<NodeListPriv>::Get ()->CreateTraceResolver ();

View File

@@ -79,7 +79,7 @@ public:
* \returns the requested trace resolver. The caller
* takes ownership of the returned pointer.
*/
static TraceResolver *CreateTraceResolver (void);
static Ptr<TraceResolver> CreateTraceResolver (void);
/**
* \param n index of requested node.

View File

@@ -82,11 +82,11 @@ Node::Construct (void)
Node::~Node ()
{}
TraceResolver *
Ptr<TraceResolver>
Node::CreateTraceResolver (void)
{
CompositeTraceResolver *resolver = new CompositeTraceResolver ();
DoFillTraceResolver (*resolver);
Ptr<CompositeTraceResolver> resolver = Create<CompositeTraceResolver> ();
DoFillTraceResolver (*PeekPointer (resolver));
return resolver;
}
@@ -141,11 +141,11 @@ Node::GetNApplications (void) const
return m_applications.size ();
}
TraceResolver *
Ptr<TraceResolver>
Node::CreateDevicesTraceResolver (void)
{
ArrayTraceResolver<Ptr<NetDevice>,NodeNetDeviceIndex> *resolver =
new ArrayTraceResolver<Ptr<NetDevice>,NodeNetDeviceIndex>
Ptr<ArrayTraceResolver<Ptr<NetDevice>,NodeNetDeviceIndex> >resolver =
Create<ArrayTraceResolver<Ptr<NetDevice>,NodeNetDeviceIndex> >
(MakeCallback (&Node::GetNDevices, this),
MakeCallback (&Node::GetDevice, this));

View File

@@ -92,7 +92,7 @@ public:
* could be used directly by a user who needs access to very low-level
* trace configuration.
*/
TraceResolver *CreateTraceResolver (void);
Ptr<TraceResolver> CreateTraceResolver (void);
/**
* \returns the unique id of this node.
@@ -212,7 +212,7 @@ private:
bool ReceiveFromDevice (Ptr<NetDevice> device, const Packet &packet,
uint16_t protocol, const Address &from);
void Construct (void);
TraceResolver *CreateDevicesTraceResolver (void);
Ptr<TraceResolver> CreateDevicesTraceResolver (void);
struct ProtocolHandlerEntry {
ProtocolHandler handler;

View File

@@ -94,10 +94,10 @@ Queue::~Queue()
NS_DEBUG("Queue::~Queue ()");
}
TraceResolver *
Ptr<TraceResolver>
Queue::CreateTraceResolver (void)
{
CompositeTraceResolver *resolver = new CompositeTraceResolver ();
Ptr<CompositeTraceResolver> resolver = Create<CompositeTraceResolver> ();
resolver->Add ("enqueue", m_traceEnqueue, QueueTraceType (QueueTraceType::ENQUEUE));
resolver->Add ("dequeue", m_traceDequeue, QueueTraceType (QueueTraceType::DEQUEUE));
resolver->Add ("drop", m_traceDrop, QueueTraceType (QueueTraceType::DROP));

View File

@@ -70,7 +70,7 @@ public:
Queue ();
virtual ~Queue ();
TraceResolver *CreateTraceResolver (void);
Ptr<TraceResolver> CreateTraceResolver (void);
/**
* \return true if the queue is empty; false otherwise