Node* -> Ptr<Node>
parent
4e32c8f56e
commit
ecfcfa977d
|
@ -45,6 +45,7 @@
|
||||||
#include "ns3/debug.h"
|
#include "ns3/debug.h"
|
||||||
#include "ns3/command-line.h"
|
#include "ns3/command-line.h"
|
||||||
#include "ns3/default-value.h"
|
#include "ns3/default-value.h"
|
||||||
|
#include "ns3/ptr.h"
|
||||||
|
|
||||||
#include "ns3/simulator.h"
|
#include "ns3/simulator.h"
|
||||||
#include "ns3/nstime.h"
|
#include "ns3/nstime.h"
|
||||||
|
@ -100,10 +101,10 @@ int main (int argc, char *argv[])
|
||||||
|
|
||||||
// Here, we will explicitly create four nodes. In more sophisticated
|
// Here, we will explicitly create four nodes. In more sophisticated
|
||||||
// topologies, we could configure a node factory.
|
// topologies, we could configure a node factory.
|
||||||
Node* n0 = new InternetNode ();
|
Ptr<Node> n0 = new InternetNode ();
|
||||||
Node* n1 = new InternetNode ();
|
Ptr<Node> n1 = new InternetNode ();
|
||||||
Node* n2 = new InternetNode ();
|
Ptr<Node> n2 = new InternetNode ();
|
||||||
Node* n3 = new InternetNode ();
|
Ptr<Node> n3 = new InternetNode ();
|
||||||
|
|
||||||
// We create the channels first without any IP addressing information
|
// We create the channels first without any IP addressing information
|
||||||
PointToPointChannel *channel0 =
|
PointToPointChannel *channel0 =
|
||||||
|
|
|
@ -28,7 +28,7 @@ namespace ns3{
|
||||||
|
|
||||||
const Iid ApplicationList::iid ("ApplicationList");
|
const Iid ApplicationList::iid ("ApplicationList");
|
||||||
|
|
||||||
ApplicationList::ApplicationList(Node* n)
|
ApplicationList::ApplicationList(Ptr<Node> n)
|
||||||
: NsUnknown (ApplicationList::iid)
|
: NsUnknown (ApplicationList::iid)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ ApplicationList::DoDispose (void)
|
||||||
ApplicationList::~ApplicationList()
|
ApplicationList::~ApplicationList()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
ApplicationList* ApplicationList::Copy(Node * n) const
|
ApplicationList* ApplicationList::Copy(Ptr<Node> n) const
|
||||||
{ // Copy this app list
|
{ // Copy this app list
|
||||||
ApplicationList* r = new ApplicationList(n);
|
ApplicationList* r = new ApplicationList(n);
|
||||||
return r;
|
return r;
|
||||||
|
@ -62,7 +62,7 @@ ApplicationList::Add(Application* a)
|
||||||
m_apps.push_back(a);
|
m_apps.push_back(a);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ApplicationList::SetNode(Node * n)
|
void ApplicationList::SetNode(Ptr<Node> n)
|
||||||
{
|
{
|
||||||
// Set the node pointer in each application
|
// Set the node pointer in each application
|
||||||
for (std::vector<Application *>::const_iterator i = m_apps.begin();
|
for (std::vector<Application *>::const_iterator i = m_apps.begin();
|
||||||
|
|
|
@ -34,12 +34,12 @@ class ApplicationList : public NsUnknown
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static const Iid iid;
|
static const Iid iid;
|
||||||
ApplicationList(Node*);
|
ApplicationList(Ptr<Node>);
|
||||||
// Copy constructor not needed, default one is correct
|
// Copy constructor not needed, default one is correct
|
||||||
virtual ~ApplicationList();
|
virtual ~ApplicationList();
|
||||||
// Inherited from Capabilty
|
// Inherited from Capabilty
|
||||||
virtual ApplicationList* Copy(Node*) const;
|
virtual ApplicationList* Copy(Ptr<Node>) const;
|
||||||
virtual void SetNode(Node *); // Sets the node for all apps
|
virtual void SetNode(Ptr<Node>); // Sets the node for all apps
|
||||||
virtual void Add(Application*); // Add an already new'ed app
|
virtual void Add(Application*); // Add an already new'ed app
|
||||||
// Manage the list
|
// Manage the list
|
||||||
template <typename T> T* AddCopy(const T& t) // Add a new application
|
template <typename T> T* AddCopy(const T& t) // Add a new application
|
||||||
|
|
|
@ -34,7 +34,7 @@ namespace ns3 {
|
||||||
// Application Methods
|
// Application Methods
|
||||||
|
|
||||||
// \brief Application Constructor
|
// \brief Application Constructor
|
||||||
Application::Application(Node * n)
|
Application::Application(Ptr<Node> n)
|
||||||
: m_node (n),
|
: m_node (n),
|
||||||
m_startVar(0), m_stopVar(0),
|
m_startVar(0), m_stopVar(0),
|
||||||
m_start(false), m_stop(false)
|
m_start(false), m_stop(false)
|
||||||
|
@ -147,7 +147,7 @@ void Application::Stop(const RandomVariable& stopVar)
|
||||||
// \brief Assign this application to a given node
|
// \brief Assign this application to a given node
|
||||||
// Called by the application manager capability when adding
|
// Called by the application manager capability when adding
|
||||||
// an application to a node.
|
// an application to a node.
|
||||||
void Application::SetNode(Node * n)
|
void Application::SetNode(Ptr<Node> n)
|
||||||
{
|
{
|
||||||
if (m_node != 0)
|
if (m_node != 0)
|
||||||
{
|
{
|
||||||
|
@ -157,7 +157,7 @@ void Application::SetNode(Node * n)
|
||||||
m_node->Ref ();
|
m_node->Ref ();
|
||||||
}
|
}
|
||||||
|
|
||||||
Node* Application::PeekNode() const
|
Ptr<Node> Application::PeekNode() const
|
||||||
{
|
{
|
||||||
return m_node;
|
return m_node;
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,6 +50,8 @@
|
||||||
#include "ns3/event-id.h"
|
#include "ns3/event-id.h"
|
||||||
#include "ns3/nstime.h"
|
#include "ns3/nstime.h"
|
||||||
#include "ns3/object.h"
|
#include "ns3/object.h"
|
||||||
|
#include "ns3/ptr.h"
|
||||||
|
#include "ns3/node.h"
|
||||||
|
|
||||||
namespace ns3 {
|
namespace ns3 {
|
||||||
|
|
||||||
|
@ -59,7 +61,7 @@ class RandomVariable;
|
||||||
class Application : public Object
|
class Application : public Object
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Application(Node *);
|
Application(Ptr<Node>);
|
||||||
Application(const Application&); // Copy constructor
|
Application(const Application&); // Copy constructor
|
||||||
Application& operator=(const Application&); // Assignment operator
|
Application& operator=(const Application&); // Assignment operator
|
||||||
virtual ~Application();
|
virtual ~Application();
|
||||||
|
@ -100,13 +102,13 @@ void Start(const RandomVariable&);
|
||||||
// \brief Attaches an application to a specific node
|
// \brief Attaches an application to a specific node
|
||||||
// Specifies which node object this application is associated with.
|
// Specifies which node object this application is associated with.
|
||||||
// \param Node object to associate with this application.
|
// \param Node object to associate with this application.
|
||||||
void SetNode(Node *);
|
void SetNode(Ptr<Node>);
|
||||||
|
|
||||||
// \brief Returns the pointer to the attached node.
|
// \brief Returns the pointer to the attached node.
|
||||||
Node* PeekNode() const;
|
Ptr<Node> PeekNode() const;
|
||||||
|
|
||||||
// Members
|
// Members
|
||||||
Node * m_node; // All applications have an associated node
|
Ptr<Node> m_node; // All applications have an associated node
|
||||||
RandomVariable* m_startVar; // Random variable for start time
|
RandomVariable* m_startVar; // Random variable for start time
|
||||||
RandomVariable* m_stopVar; // Random variable for stop time
|
RandomVariable* m_stopVar; // Random variable for stop time
|
||||||
EventId m_startEvent;// Event identifier for start event
|
EventId m_startEvent;// Event identifier for start event
|
||||||
|
|
|
@ -42,7 +42,7 @@ uint32_t OnOffApplication::g_defaultSize = 512;
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
|
|
||||||
OnOffApplication::OnOffApplication(Node * n,
|
OnOffApplication::OnOffApplication(Ptr<Node> n,
|
||||||
const Ipv4Address rip, // Remote IP addr
|
const Ipv4Address rip, // Remote IP addr
|
||||||
uint16_t rport, // Remote port
|
uint16_t rport, // Remote port
|
||||||
const RandomVariable& ontime,
|
const RandomVariable& ontime,
|
||||||
|
@ -67,7 +67,7 @@ uint32_t OnOffApplication::g_defaultSize = 512;
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
OnOffApplication::OnOffApplication(Node * n, const OnOffApplication& c)
|
OnOffApplication::OnOffApplication(Ptr<Node> n, const OnOffApplication& c)
|
||||||
: Application(n),
|
: Application(n),
|
||||||
m_socket(0),
|
m_socket(0),
|
||||||
m_peerIP(c.m_peerIP),
|
m_peerIP(c.m_peerIP),
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
|
|
||||||
#include "application.h"
|
#include "application.h"
|
||||||
#include "ns3/event-id.h"
|
#include "ns3/event-id.h"
|
||||||
|
#include "ns3/ptr.h"
|
||||||
|
|
||||||
namespace ns3 {
|
namespace ns3 {
|
||||||
|
|
||||||
|
@ -40,7 +41,7 @@ class DataRate;
|
||||||
class OnOffApplication : public Application {
|
class OnOffApplication : public Application {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
OnOffApplication(Node * n,
|
OnOffApplication(Ptr<Node> n,
|
||||||
const Ipv4Address, // Peer IP address
|
const Ipv4Address, // Peer IP address
|
||||||
uint16_t, // Peer port
|
uint16_t, // Peer port
|
||||||
const RandomVariable&, // Random variable for On time
|
const RandomVariable&, // Random variable for On time
|
||||||
|
@ -48,7 +49,7 @@ public:
|
||||||
DataRate = g_defaultRate, // Data rate when on
|
DataRate = g_defaultRate, // Data rate when on
|
||||||
uint32_t = g_defaultSize); // Size of packets
|
uint32_t = g_defaultSize); // Size of packets
|
||||||
|
|
||||||
OnOffApplication(Node * n, const OnOffApplication&); // Copy constructor
|
OnOffApplication(Ptr<Node> n, const OnOffApplication&); // Copy constructor
|
||||||
virtual ~OnOffApplication(); // Destructor
|
virtual ~OnOffApplication(); // Destructor
|
||||||
virtual void StartApplication(); // Called at time specified by Start
|
virtual void StartApplication(); // Called at time specified by Start
|
||||||
virtual void StopApplication(); // Called at time specified by Stop
|
virtual void StopApplication(); // Called at time specified by Stop
|
||||||
|
|
|
@ -254,8 +254,8 @@ PtrTest::RunTests (void)
|
||||||
m_nDestroyed = 0;
|
m_nDestroyed = 0;
|
||||||
{
|
{
|
||||||
Ptr<NoCount> p = new NoCount (cb);
|
Ptr<NoCount> p = new NoCount (cb);
|
||||||
NoCount const&v1 = *p;
|
NoCount const&v1 = p.Peek();
|
||||||
NoCount v2 = *p;
|
NoCount v2 = p.Peek();
|
||||||
v1.Nothing ();
|
v1.Nothing ();
|
||||||
v2.Nothing ();
|
v2.Nothing ();
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,7 +72,8 @@ public:
|
||||||
Ptr (Ptr<U> const &o);
|
Ptr (Ptr<U> const &o);
|
||||||
~Ptr () ;
|
~Ptr () ;
|
||||||
Ptr<T> &operator = (Ptr const& o);
|
Ptr<T> &operator = (Ptr const& o);
|
||||||
T const& operator * () const;
|
T const& Peek () const;
|
||||||
|
T * Get () const;
|
||||||
T *operator -> () const;
|
T *operator -> () const;
|
||||||
T *operator -> ();
|
T *operator -> ();
|
||||||
// allow if (!sp)
|
// allow if (!sp)
|
||||||
|
@ -172,11 +173,19 @@ Ptr<T>::operator = (Ptr const& o)
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T const&
|
T const&
|
||||||
Ptr<T>::operator * () const
|
Ptr<T>::Peek () const
|
||||||
{
|
{
|
||||||
return *m_ptr;
|
return *m_ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
T *
|
||||||
|
Ptr<T>::Get () const
|
||||||
|
{
|
||||||
|
m_ptr->Ref();
|
||||||
|
return m_ptr;
|
||||||
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T *
|
T *
|
||||||
Ptr<T>::operator -> ()
|
Ptr<T>::operator -> ()
|
||||||
|
@ -219,7 +228,7 @@ Ptr<T>::Remove (void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
NS_ASSERT (m_ptr->IsSingle());
|
//NS_ASSERT (m_ptr->IsSingle());
|
||||||
T *retval = m_ptr;
|
T *retval = m_ptr;
|
||||||
m_ptr = 0;
|
m_ptr = 0;
|
||||||
return retval;
|
return retval;
|
||||||
|
|
|
@ -32,7 +32,7 @@ NS_DEBUG_COMPONENT_DEFINE ("PointToPointNetDevice");
|
||||||
|
|
||||||
namespace ns3 {
|
namespace ns3 {
|
||||||
|
|
||||||
PointToPointNetDevice::PointToPointNetDevice (Node* node)
|
PointToPointNetDevice::PointToPointNetDevice (Ptr<Node> node)
|
||||||
:
|
:
|
||||||
NetDevice(node, MacAddress ("00:00:00:00:00:00")),
|
NetDevice(node, MacAddress ("00:00:00:00:00:00")),
|
||||||
m_txMachineState (READY),
|
m_txMachineState (READY),
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
#include "ns3/callback-trace-source.h"
|
#include "ns3/callback-trace-source.h"
|
||||||
#include "ns3/nstime.h"
|
#include "ns3/nstime.h"
|
||||||
#include "ns3/data-rate.h"
|
#include "ns3/data-rate.h"
|
||||||
|
#include "ns3/ptr.h"
|
||||||
|
|
||||||
namespace ns3 {
|
namespace ns3 {
|
||||||
|
|
||||||
|
@ -79,7 +80,7 @@ public:
|
||||||
* @see PointToPointTopology::AddPointToPointLink ()
|
* @see PointToPointTopology::AddPointToPointLink ()
|
||||||
* @param node the Node to which this device is connected.
|
* @param node the Node to which this device is connected.
|
||||||
*/
|
*/
|
||||||
PointToPointNetDevice (Node* node);
|
PointToPointNetDevice (Ptr<Node> node);
|
||||||
/**
|
/**
|
||||||
* Copy Construct a PointToPointNetDevice
|
* Copy Construct a PointToPointNetDevice
|
||||||
*
|
*
|
||||||
|
|
|
@ -40,8 +40,8 @@ namespace ns3 {
|
||||||
|
|
||||||
PointToPointChannel *
|
PointToPointChannel *
|
||||||
PointToPointTopology::AddPointToPointLink(
|
PointToPointTopology::AddPointToPointLink(
|
||||||
Node* n1,
|
Ptr<Node> n1,
|
||||||
Node* n2,
|
Ptr<Node> n2,
|
||||||
const DataRate& bps,
|
const DataRate& bps,
|
||||||
const Time& delay)
|
const Time& delay)
|
||||||
{
|
{
|
||||||
|
@ -65,8 +65,8 @@ PointToPointTopology::AddPointToPointLink(
|
||||||
bool
|
bool
|
||||||
PointToPointTopology::AddIpv4Addresses(
|
PointToPointTopology::AddIpv4Addresses(
|
||||||
const PointToPointChannel *chan,
|
const PointToPointChannel *chan,
|
||||||
Node* n1, const Ipv4Address& addr1,
|
Ptr<Node> n1, const Ipv4Address& addr1,
|
||||||
Node* n2, const Ipv4Address& addr2)
|
Ptr<Node> n2, const Ipv4Address& addr2)
|
||||||
{
|
{
|
||||||
|
|
||||||
// Duplex link is assumed to be subnetted as a /30
|
// Duplex link is assumed to be subnetted as a /30
|
||||||
|
@ -116,7 +116,7 @@ PointToPointTopology::AddIpv4Addresses(
|
||||||
// there are possibly multiple devices connecting n1 and n2 (for example
|
// there are possibly multiple devices connecting n1 and n2 (for example
|
||||||
// wireless with two devices on different channels) this will return
|
// wireless with two devices on different channels) this will return
|
||||||
// the first one found.
|
// the first one found.
|
||||||
PointToPointNetDevice* PointToPointTopology::GetNetDevice(Node* n1, Node* n2)
|
PointToPointNetDevice* PointToPointTopology::GetNetDevice(Ptr<Node> n1, Ptr<Node> n2)
|
||||||
{
|
{
|
||||||
// First get the NetDeviceList capability from node 1
|
// First get the NetDeviceList capability from node 1
|
||||||
NetDeviceList* ndl1 = n1->GetNetDeviceList();
|
NetDeviceList* ndl1 = n1->GetNetDeviceList();
|
||||||
|
@ -136,8 +136,8 @@ PointToPointNetDevice* PointToPointTopology::GetNetDevice(Node* n1, Node* n2)
|
||||||
|
|
||||||
// Get the channel connecting node n1 to node n2
|
// Get the channel connecting node n1 to node n2
|
||||||
PointToPointChannel* PointToPointTopology::GetChannel(
|
PointToPointChannel* PointToPointTopology::GetChannel(
|
||||||
Node* n1,
|
Ptr<Node> n1,
|
||||||
Node* n2
|
Ptr<Node> n2
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
NetDevice* nd = GetNetDevice(n1, n2);
|
NetDevice* nd = GetNetDevice(n1, n2);
|
||||||
|
@ -145,14 +145,14 @@ PointToPointChannel* PointToPointTopology::GetChannel(
|
||||||
return nd->GetChannel();
|
return nd->GetChannel();
|
||||||
}
|
}
|
||||||
|
|
||||||
Queue* PointToPointTopology::GetQueue(Node* n1, Node* n2)
|
Queue* PointToPointTopology::GetQueue(Ptr<Node> n1, Ptr<Node> n2)
|
||||||
{
|
{
|
||||||
NetDevice* nd = GetNetDevice(n1, n2);
|
NetDevice* nd = GetNetDevice(n1, n2);
|
||||||
if (!nd) return 0; // No net device, so in queue
|
if (!nd) return 0; // No net device, so in queue
|
||||||
return nd->GetQueue();
|
return nd->GetQueue();
|
||||||
}
|
}
|
||||||
|
|
||||||
Queue* PointToPointTopology::SetQueue(Node* n1, Node* n2, const Queue& q)
|
Queue* PointToPointTopology::SetQueue(Ptr<Node> n1, Ptr<Node> n2, const Queue& q)
|
||||||
{
|
{
|
||||||
NetDevice* nd = GetNetDevice(n1, n2);
|
NetDevice* nd = GetNetDevice(n1, n2);
|
||||||
if (!nd) return 0; // No net device, can't set queue
|
if (!nd) return 0; // No net device, can't set queue
|
||||||
|
@ -163,8 +163,8 @@ Queue* PointToPointTopology::SetQueue(Node* n1, Node* n2, const Queue& q)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef GFR
|
#ifdef GFR
|
||||||
P2PChannel* Topology::AddDuplexLink(Node* n1, const IPAddr& ip1,
|
P2PChannel* Topology::AddDuplexLink(Ptr<Node> n1, const IPAddr& ip1,
|
||||||
Node* n2, const IPAddr& ip2,
|
Ptr<Node> n2, const IPAddr& ip2,
|
||||||
const Rate& rate, const Time& delay)
|
const Rate& rate, const Time& delay)
|
||||||
{
|
{
|
||||||
// First get the NetDeviceList capability from each node
|
// First get the NetDeviceList capability from each node
|
||||||
|
@ -195,21 +195,21 @@ P2PChannel* Topology::AddDuplexLink(Node* n1, const IPAddr& ip1,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the channel connecting node n1 to node n2
|
// Get the channel connecting node n1 to node n2
|
||||||
Channel* Topology::GetChannel(Node* n1, Node* n2)
|
Channel* Topology::GetChannel(Ptr<Node> n1, Ptr<Node> n2)
|
||||||
{
|
{
|
||||||
NetDevice* nd = GetNetDevice(n1, n2);
|
NetDevice* nd = GetNetDevice(n1, n2);
|
||||||
if (!nd) return 0; // No net device, so no channel
|
if (!nd) return 0; // No net device, so no channel
|
||||||
return nd->GetChannel();
|
return nd->GetChannel();
|
||||||
}
|
}
|
||||||
|
|
||||||
Queue* Topology::GetQueue(Node* n1, Node* n2)
|
Queue* Topology::GetQueue(Ptr<Node> n1, Ptr<Node> n2)
|
||||||
{
|
{
|
||||||
NetDevice* nd = GetNetDevice(n1, n2);
|
NetDevice* nd = GetNetDevice(n1, n2);
|
||||||
if (!nd) return 0; // No net device, so in queue
|
if (!nd) return 0; // No net device, so in queue
|
||||||
return nd->GetQueue();
|
return nd->GetQueue();
|
||||||
}
|
}
|
||||||
|
|
||||||
Queue* Topology::SetQueue(Node* n1, Node* n2, const Queue& q)
|
Queue* Topology::SetQueue(Ptr<Node> n1, Ptr<Node> n2, const Queue& q)
|
||||||
{
|
{
|
||||||
NetDevice* nd = GetNetDevice(n1, n2);
|
NetDevice* nd = GetNetDevice(n1, n2);
|
||||||
if (!nd) return 0; // No net device, can't set queue
|
if (!nd) return 0; // No net device, can't set queue
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
//
|
//
|
||||||
// Topology helper for ns3.
|
// Topology helper for ns3.
|
||||||
// George F. Riley, Georgia Tech, Spring 2007
|
// George F. Riley, Georgia Tech, Spring 2007
|
||||||
|
#include "ns3/ptr.h"
|
||||||
#ifndef __POINT_TO_POINT_TOPOLOGY_H__
|
#ifndef __POINT_TO_POINT_TOPOLOGY_H__
|
||||||
#define __POINT_TO_POINT_TOPOLOGY_H__
|
#define __POINT_TO_POINT_TOPOLOGY_H__
|
||||||
|
|
||||||
|
@ -51,29 +51,29 @@ public:
|
||||||
* and propagation delay.
|
* and propagation delay.
|
||||||
*/
|
*/
|
||||||
static PointToPointChannel* AddPointToPointLink(
|
static PointToPointChannel* AddPointToPointLink(
|
||||||
Node*, Node*, const DataRate&, const Time&);
|
Ptr<Node>, Ptr<Node>, const DataRate&, const Time&);
|
||||||
|
|
||||||
static bool AddIpv4Addresses(
|
static bool AddIpv4Addresses(
|
||||||
const PointToPointChannel*,
|
const PointToPointChannel*,
|
||||||
Node*, const Ipv4Address&,
|
Ptr<Node>, const Ipv4Address&,
|
||||||
Node*, const Ipv4Address&);
|
Ptr<Node>, const Ipv4Address&);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the connecting node n1 to node n2
|
* Get the connecting node n1 to node n2
|
||||||
*/
|
*/
|
||||||
static PointToPointChannel* GetChannel(Node*, Node*);
|
static PointToPointChannel* GetChannel(Ptr<Node>, Ptr<Node>);
|
||||||
/**
|
/**
|
||||||
* Get the NetDevice connecting node n1 to n2
|
* Get the NetDevice connecting node n1 to n2
|
||||||
*/
|
*/
|
||||||
static PointToPointNetDevice* GetNetDevice(Node*, Node*);
|
static PointToPointNetDevice* GetNetDevice(Ptr<Node>, Ptr<Node>);
|
||||||
/**
|
/**
|
||||||
* Get the queue associated with a link between two nodes
|
* Get the queue associated with a link between two nodes
|
||||||
*/
|
*/
|
||||||
static Queue* GetQueue(Node*, Node*);
|
static Queue* GetQueue(Ptr<Node>, Ptr<Node>);
|
||||||
/**
|
/**
|
||||||
* Set the queue associated with a link between two nodes
|
* Set the queue associated with a link between two nodes
|
||||||
*/
|
*/
|
||||||
static Queue* SetQueue(Node*, Node*, const Queue&);
|
static Queue* SetQueue(Ptr<Node>, Ptr<Node>, const Queue&);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace ns3
|
} // namespace ns3
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
|
|
||||||
namespace ns3 {
|
namespace ns3 {
|
||||||
|
|
||||||
NetDevice::NetDevice(Node *node, const MacAddress& addr) :
|
NetDevice::NetDevice(Ptr<Node> node, const MacAddress& addr) :
|
||||||
m_node (node),
|
m_node (node),
|
||||||
m_name(""),
|
m_name(""),
|
||||||
m_ifIndex (0),
|
m_ifIndex (0),
|
||||||
|
@ -228,7 +228,7 @@ NetDevice::NotifyLinkDown (void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Node *
|
Ptr<Node>
|
||||||
NetDevice::PeekNode (void) const
|
NetDevice::PeekNode (void) const
|
||||||
{
|
{
|
||||||
return m_node;
|
return m_node;
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#include "ns3/packet.h"
|
#include "ns3/packet.h"
|
||||||
#include "ns3/object.h"
|
#include "ns3/object.h"
|
||||||
#include "mac-address.h"
|
#include "mac-address.h"
|
||||||
|
#include "ns3/ptr.h"
|
||||||
|
|
||||||
namespace ns3 {
|
namespace ns3 {
|
||||||
|
|
||||||
|
@ -61,7 +62,7 @@ public:
|
||||||
* \param node base class node pointer of device's node
|
* \param node base class node pointer of device's node
|
||||||
* \param addr MAC address of this device.
|
* \param addr MAC address of this device.
|
||||||
*/
|
*/
|
||||||
NetDevice(Node* node, const MacAddress& addr);
|
NetDevice(Ptr<Node> node, const MacAddress& addr);
|
||||||
virtual ~NetDevice();
|
virtual ~NetDevice();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -169,7 +170,7 @@ public:
|
||||||
* base class to print the nodeid for example, it can invoke
|
* base class to print the nodeid for example, it can invoke
|
||||||
* this method.
|
* this method.
|
||||||
*/
|
*/
|
||||||
Node* PeekNode (void) const;
|
Ptr<Node> PeekNode (void) const;
|
||||||
|
|
||||||
bool NeedsArp (void) const;
|
bool NeedsArp (void) const;
|
||||||
|
|
||||||
|
@ -241,7 +242,7 @@ public:
|
||||||
virtual bool DoNeedsArp (void) const = 0;
|
virtual bool DoNeedsArp (void) const = 0;
|
||||||
virtual TraceResolver *DoCreateTraceResolver (TraceContext const &context) = 0;
|
virtual TraceResolver *DoCreateTraceResolver (TraceContext const &context) = 0;
|
||||||
virtual Channel *DoGetChannel (void) const = 0;
|
virtual Channel *DoGetChannel (void) const = 0;
|
||||||
Node* m_node;
|
Ptr<Node> m_node;
|
||||||
std::string m_name;
|
std::string m_name;
|
||||||
uint16_t m_ifIndex;
|
uint16_t m_ifIndex;
|
||||||
MacAddress m_address;
|
MacAddress m_address;
|
||||||
|
|
Loading…
Reference in New Issue