Hacked arraytraceresolver to compile, but segfaults upon running simple-p2p
parent
de3b9c78f3
commit
bd73c92bb5
|
@ -24,6 +24,7 @@
|
|||
#include <stdint.h>
|
||||
#include <string>
|
||||
#include "ns3/callback.h"
|
||||
#include "ns3/ptr.h"
|
||||
#include "trace-resolver.h"
|
||||
|
||||
namespace ns3 {
|
||||
|
@ -82,12 +83,15 @@ public:
|
|||
ArrayTraceResolver (TraceContext const &context,
|
||||
Callback<uint32_t> getSize,
|
||||
Callback<T *, uint32_t> get);
|
||||
ArrayTraceResolver (TraceContext const &context,
|
||||
Callback<uint32_t> getSize,
|
||||
Callback<Ptr<T>, uint32_t> get);
|
||||
private:
|
||||
virtual TraceResolverList DoLookup (std::string id) const;
|
||||
Callback<uint32_t> m_getSize;
|
||||
Callback<T *, uint32_t> m_get;
|
||||
Callback<Ptr<T>, uint32_t> m_get2;
|
||||
};
|
||||
|
||||
}//namespace ns3
|
||||
|
||||
namespace ns3 {
|
||||
|
@ -115,6 +119,14 @@ ArrayTraceResolver<T>::ArrayTraceResolver (TraceContext const &context,
|
|||
m_get (get)
|
||||
{}
|
||||
template <typename T>
|
||||
ArrayTraceResolver<T>::ArrayTraceResolver (TraceContext const &context,
|
||||
Callback<uint32_t> getSize,
|
||||
Callback<Ptr<T>, uint32_t> get)
|
||||
: TraceResolver (context),
|
||||
m_getSize (getSize),
|
||||
m_get2 (get)
|
||||
{}
|
||||
template <typename T>
|
||||
TraceResolver::TraceResolverList
|
||||
ArrayTraceResolver<T>::DoLookup (std::string id) const
|
||||
{
|
||||
|
@ -127,6 +139,7 @@ ArrayTraceResolver<T>::DoLookup (std::string id) const
|
|||
typename ArrayTraceResolver<T>::Index index = typename ArrayTraceResolver<T>::Index (i);
|
||||
context.Add (index);
|
||||
list.push_back (m_get (i)->CreateTraceResolver (context));
|
||||
|
||||
}
|
||||
}
|
||||
return list;
|
||||
|
|
|
@ -49,37 +49,37 @@ public:
|
|||
NodeListPriv ();
|
||||
~NodeListPriv ();
|
||||
|
||||
uint32_t Add (Node *node);
|
||||
uint32_t Add (Ptr<Node> node);
|
||||
NodeList::Iterator Begin (void);
|
||||
NodeList::Iterator End (void);
|
||||
TraceResolver *CreateTraceResolver (TraceContext const &context);
|
||||
Node *PeekNode (uint32_t n);
|
||||
Ptr<Node> PeekNode (uint32_t n);
|
||||
uint32_t GetNNodes (void);
|
||||
|
||||
private:
|
||||
std::vector<Node *> m_nodes;
|
||||
std::vector<Ptr<Node> > m_nodes;
|
||||
};
|
||||
|
||||
NodeListPriv::NodeListPriv ()
|
||||
{}
|
||||
NodeListPriv::~NodeListPriv ()
|
||||
{
|
||||
for (std::vector<Node *>::iterator i = m_nodes.begin ();
|
||||
for (std::vector<Ptr<Node> >::iterator i = m_nodes.begin ();
|
||||
i != m_nodes.end (); i++)
|
||||
{
|
||||
Node *node = *i;
|
||||
Ptr<Node> 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> 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<Node>
|
||||
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> node)
|
||||
{
|
||||
return SimulationSingleton<NodeListPriv>::Get ()->Add (node);
|
||||
}
|
||||
|
@ -145,7 +145,7 @@ NodeList::CreateTraceResolver (TraceContext const &context)
|
|||
{
|
||||
return SimulationSingleton<NodeListPriv>::Get ()->CreateTraceResolver (context);
|
||||
}
|
||||
Node *
|
||||
Ptr<Node>
|
||||
NodeList::PeekNode (uint32_t n)
|
||||
{
|
||||
return SimulationSingleton<NodeListPriv>::Get ()->PeekNode (n);
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
|
||||
#include <vector>
|
||||
#include "ns3/array-trace-resolver.h"
|
||||
#include "ns3/ptr.h"
|
||||
|
||||
namespace ns3 {
|
||||
|
||||
|
@ -35,14 +36,14 @@ class NodeList
|
|||
{
|
||||
public:
|
||||
typedef ArrayTraceResolver<Node>::Index NodeIndex;
|
||||
typedef std::vector<Node *>::iterator Iterator;
|
||||
typedef std::vector< Ptr<Node> >::iterator Iterator;
|
||||
|
||||
static uint32_t Add (Node *node);
|
||||
static uint32_t Add (Ptr<Node> node);
|
||||
static Iterator Begin (void);
|
||||
static Iterator End (void);
|
||||
static TraceResolver *CreateTraceResolver (TraceContext const &context);
|
||||
|
||||
static Node *PeekNode (uint32_t n);
|
||||
static Ptr<Node> PeekNode (uint32_t n);
|
||||
};
|
||||
|
||||
}//namespace ns3
|
||||
|
|
Loading…
Reference in New Issue