diff --git a/examples/simple-p2p.cc b/examples/simple-p2p.cc index a01b2cc54..759f502c2 100644 --- a/examples/simple-p2p.cc +++ b/examples/simple-p2p.cc @@ -126,7 +126,7 @@ int main (int argc, char *argv[]) DataRate(448000), 210); // Add to Node's ApplicationList (takes ownership of pointer) - ApplicationList *apl0 = n0->GetApplicationList(); + ApplicationList *apl0 = n0->QueryInterface (ApplicationList::iid); apl0->Add(ooff0); apl0->Unref (); // Start the application @@ -144,7 +144,7 @@ int main (int argc, char *argv[]) DataRate(448000), 210); // Add to Node's ApplicationList (takes ownership of pointer) - ApplicationList *apl3 = n3->GetApplicationList(); + ApplicationList *apl3 = n3->QueryInterface (ApplicationList::iid); apl3->Add(ooff1); apl3->Unref (); // Start the application diff --git a/src/node/application-list.cc b/src/node/application-list.cc index 2a8f3ddd6..4f64bfbc5 100644 --- a/src/node/application-list.cc +++ b/src/node/application-list.cc @@ -23,10 +23,14 @@ #include "application.h" #include "application-list.h" +#include "ns3/iid-manager.h" namespace ns3{ +const uint32_t ApplicationList::iid = IidManager::Allocate ("ApplicationList"); + ApplicationList::ApplicationList(Node* n) + : NsUnknown (ApplicationList::iid) {} void diff --git a/src/node/application-list.h b/src/node/application-list.h index 6c10d99a1..8a4d5c9f0 100644 --- a/src/node/application-list.h +++ b/src/node/application-list.h @@ -25,14 +25,15 @@ #define __APPLICATION_LIST_H__ #include "application.h" -#include "ns3/object.h" +#include "ns3/ns-unknown.h" #include namespace ns3 { -class ApplicationList : public Object +class ApplicationList : public NsUnknown { public: + static const uint32_t iid; ApplicationList(Node*); // Copy constructor not needed, default one is correct virtual ~ApplicationList(); diff --git a/src/node/internet-node.cc b/src/node/internet-node.cc index e5046c3d3..1119f21f8 100644 --- a/src/node/internet-node.cc +++ b/src/node/internet-node.cc @@ -38,10 +38,11 @@ namespace ns3 { InternetNode::InternetNode() { // Instantiate the capabilities - m_applicationList = new ApplicationList(this); + ApplicationList *applicationList = new ApplicationList(this); L3Demux *l3Demux = new L3Demux(this); Ipv4L4Demux *ipv4L4Demux = new Ipv4L4Demux(this); + NsUnknown::AddInterface (applicationList); NsUnknown::AddInterface (l3Demux); NsUnknown::AddInterface (ipv4L4Demux); @@ -53,6 +54,7 @@ InternetNode::InternetNode() l3Demux->Insert (arp); ipv4L4Demux->Insert (udp); + applicationList->Unref (); l3Demux->Unref (); ipv4L4Demux->Unref (); ipv4->Unref (); @@ -97,24 +99,9 @@ InternetNode::CreateTraceResolver (TraceContext const &context) void InternetNode::DoDispose() { - if (m_applicationList != 0) - { - m_applicationList->Dispose (); - m_applicationList->Unref (); - m_applicationList = 0; - } - Node::DoDispose (); } -ApplicationList* -InternetNode::GetApplicationList() const -{ - m_applicationList->Ref (); - return m_applicationList; -} - - Ipv4 * InternetNode::GetIpv4 (void) const { diff --git a/src/node/internet-node.h b/src/node/internet-node.h index d010516cf..09df4104b 100644 --- a/src/node/internet-node.h +++ b/src/node/internet-node.h @@ -45,7 +45,6 @@ public: virtual ~InternetNode (); virtual TraceResolver *CreateTraceResolver (TraceContext const &context); // Capability access - virtual ApplicationList* GetApplicationList() const; virtual Ipv4 * GetIpv4 (void) const; virtual Udp * GetUdp (void) const; virtual Arp * GetArp (void) const; @@ -57,7 +56,6 @@ private: virtual void DoAddDevice (NetDevice *device) const; bool ReceiveFromDevice (NetDevice *device, const Packet &p, uint16_t protocolNumber) const; // Capabilities - ApplicationList* m_applicationList; std::string m_name; }; diff --git a/src/node/node.cc b/src/node/node.cc index aba39ac07..ee1791db5 100644 --- a/src/node/node.cc +++ b/src/node/node.cc @@ -102,11 +102,6 @@ void Node::DoDispose() NsUnknown::DoDispose (); } -ApplicationList* Node::GetApplicationList() const -{ - return 0; -} - Ipv4 * Node::GetIpv4 (void) const { diff --git a/src/node/node.h b/src/node/node.h index 96c65f5e9..43d19b42e 100644 --- a/src/node/node.h +++ b/src/node/node.h @@ -31,7 +31,6 @@ namespace ns3 { -class ApplicationList; class Ipv4; class Udp; class Arp; @@ -72,7 +71,6 @@ public: // Each of these has a default behavior of returning a null capability // of the correct type if one exists, or the nil pointer if no // null capability exists. - virtual ApplicationList* GetApplicationList() const; virtual Ipv4 * GetIpv4 (void) const; virtual Udp * GetUdp (void) const; virtual Arp * GetArp (void) const;