From bd73c92bb562e3e80a84d2d98b7dd83bacac3c7c Mon Sep 17 00:00:00 2001 From: Raj Bhattacharjea Date: Wed, 9 May 2007 16:56:33 -0400 Subject: [PATCH] Hacked arraytraceresolver to compile, but segfaults upon running simple-p2p --- src/common/array-trace-resolver.h | 15 ++++++++++++++- src/node/node-list.cc | 22 +++++++++++----------- src/node/node-list.h | 7 ++++--- 3 files changed, 29 insertions(+), 15 deletions(-) diff --git a/src/common/array-trace-resolver.h b/src/common/array-trace-resolver.h index af4e231bd..4374df6ce 100644 --- a/src/common/array-trace-resolver.h +++ b/src/common/array-trace-resolver.h @@ -24,6 +24,7 @@ #include #include #include "ns3/callback.h" +#include "ns3/ptr.h" #include "trace-resolver.h" namespace ns3 { @@ -82,12 +83,15 @@ public: ArrayTraceResolver (TraceContext const &context, Callback getSize, Callback get); + ArrayTraceResolver (TraceContext const &context, + Callback getSize, + Callback, uint32_t> get); private: virtual TraceResolverList DoLookup (std::string id) const; Callback m_getSize; Callback m_get; + Callback, uint32_t> m_get2; }; - }//namespace ns3 namespace ns3 { @@ -115,6 +119,14 @@ ArrayTraceResolver::ArrayTraceResolver (TraceContext const &context, m_get (get) {} template +ArrayTraceResolver::ArrayTraceResolver (TraceContext const &context, + Callback getSize, + Callback, uint32_t> get) + : TraceResolver (context), + m_getSize (getSize), + m_get2 (get) +{} +template TraceResolver::TraceResolverList ArrayTraceResolver::DoLookup (std::string id) const { @@ -127,6 +139,7 @@ ArrayTraceResolver::DoLookup (std::string id) const typename ArrayTraceResolver::Index index = typename ArrayTraceResolver::Index (i); context.Add (index); list.push_back (m_get (i)->CreateTraceResolver (context)); + } } return list; diff --git a/src/node/node-list.cc b/src/node/node-list.cc index 5ea7d3a8b..889117ea3 100644 --- a/src/node/node-list.cc +++ b/src/node/node-list.cc @@ -49,37 +49,37 @@ public: NodeListPriv (); ~NodeListPriv (); - uint32_t Add (Node *node); + uint32_t Add (Ptr node); NodeList::Iterator Begin (void); NodeList::Iterator End (void); TraceResolver *CreateTraceResolver (TraceContext const &context); - Node *PeekNode (uint32_t n); + Ptr PeekNode (uint32_t n); uint32_t GetNNodes (void); private: - std::vector m_nodes; + std::vector > m_nodes; }; NodeListPriv::NodeListPriv () {} NodeListPriv::~NodeListPriv () { - for (std::vector::iterator i = m_nodes.begin (); + for (std::vector >::iterator i = m_nodes.begin (); i != m_nodes.end (); i++) { - Node *node = *i; + Ptr node = *i; node->Dispose (); - node->Unref (); + //node->Unref (); } m_nodes.erase (m_nodes.begin (), m_nodes.end ()); } uint32_t -NodeListPriv::Add (Node *node) +NodeListPriv::Add (Ptr node) { uint32_t index = m_nodes.size (); - node->Ref (); + //node->Ref (); m_nodes.push_back (node); return index; @@ -99,7 +99,7 @@ NodeListPriv::GetNNodes (void) { return m_nodes.size (); } -Node * +Ptr NodeListPriv::PeekNode (uint32_t n) { return m_nodes[n]; @@ -126,7 +126,7 @@ NodeListPriv::CreateTraceResolver (TraceContext const &context) namespace ns3 { uint32_t -NodeList::Add (Node *node) +NodeList::Add (Ptr node) { return SimulationSingleton::Get ()->Add (node); } @@ -145,7 +145,7 @@ NodeList::CreateTraceResolver (TraceContext const &context) { return SimulationSingleton::Get ()->CreateTraceResolver (context); } -Node * +Ptr NodeList::PeekNode (uint32_t n) { return SimulationSingleton::Get ()->PeekNode (n); diff --git a/src/node/node-list.h b/src/node/node-list.h index 57d8bf663..cbc19f250 100644 --- a/src/node/node-list.h +++ b/src/node/node-list.h @@ -24,6 +24,7 @@ #include #include "ns3/array-trace-resolver.h" +#include "ns3/ptr.h" namespace ns3 { @@ -35,14 +36,14 @@ class NodeList { public: typedef ArrayTraceResolver::Index NodeIndex; - typedef std::vector::iterator Iterator; + typedef std::vector< Ptr >::iterator Iterator; - static uint32_t Add (Node *node); + static uint32_t Add (Ptr node); static Iterator Begin (void); static Iterator End (void); static TraceResolver *CreateTraceResolver (TraceContext const &context); - static Node *PeekNode (uint32_t n); + static Ptr PeekNode (uint32_t n); }; }//namespace ns3