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