diff --git a/src/devices/p2p/p2p-net-device.cc b/src/devices/p2p/p2p-net-device.cc index 0a1063d4b..ae322c4fa 100644 --- a/src/devices/p2p/p2p-net-device.cc +++ b/src/devices/p2p/p2p-net-device.cc @@ -56,8 +56,6 @@ PointToPointNetDevice::~PointToPointNetDevice() { NS_DEBUG ("PointToPointNetDevice::~PointToPointNetDevice ()"); - Dispose (); - delete m_queue; m_queue = 0; } @@ -102,14 +100,14 @@ PointToPointNetDevice::PointToPointNetDevice (const PointToPointNetDevice& nd) } -void PointToPointNetDevice::Dispose() +void PointToPointNetDevice::DoDispose() { if (m_channel != 0) { m_channel->Unref (); m_channel = 0; } - NetDevice::Dispose (); + NetDevice::DoDispose (); } // diff --git a/src/devices/p2p/p2p-net-device.h b/src/devices/p2p/p2p-net-device.h index ecf35510d..2826f6f1b 100644 --- a/src/devices/p2p/p2p-net-device.h +++ b/src/devices/p2p/p2p-net-device.h @@ -96,10 +96,6 @@ public: * This is the destructor for the PointToPointNetDevice. */ virtual ~PointToPointNetDevice(); - /** - *Dispose method for refcounting - */ - virtual void Dispose(); /** * Assignment Operator for a PointToPointNetDevice * @@ -172,6 +168,7 @@ public: */ void Receive (Packet& p); protected: + virtual void DoDispose (void); /** * Get a copy of the attached Queue. * diff --git a/src/node/application-list.cc b/src/node/application-list.cc index 4f64bfbc5..ae659d515 100644 --- a/src/node/application-list.cc +++ b/src/node/application-list.cc @@ -34,7 +34,7 @@ ApplicationList::ApplicationList(Node* n) {} void -ApplicationList::Dispose (void) +ApplicationList::DoDispose (void) { for (std::vector::const_iterator i = m_apps.begin(); i != m_apps.end(); ++i) @@ -44,12 +44,11 @@ ApplicationList::Dispose (void) app->Unref (); } m_apps.clear (); + NsUnknown::DoDispose (); } ApplicationList::~ApplicationList() -{ // Destructor, nothing needed as the SmartSet destroys itself - Dispose (); -} +{} ApplicationList* ApplicationList::Copy(Node * n) const { // Copy this app list diff --git a/src/node/application-list.h b/src/node/application-list.h index 8a4d5c9f0..24b3cdbae 100644 --- a/src/node/application-list.h +++ b/src/node/application-list.h @@ -38,7 +38,6 @@ public: // Copy constructor not needed, default one is correct virtual ~ApplicationList(); // Inherited from Capabilty - virtual void Dispose (void); virtual ApplicationList* Copy(Node*) const; virtual void SetNode(Node *); // Sets the node for all apps virtual void Add(Application*); // Add an already new'ed app @@ -53,6 +52,8 @@ public: uint32_t Count() const; // Number of applications Application* Get(uint32_t i) const; // Get app by index +protected: + virtual void DoDispose (void); private: std::vector m_apps; }; diff --git a/src/node/application.cc b/src/node/application.cc index fb75f1113..810ee1ee9 100644 --- a/src/node/application.cc +++ b/src/node/application.cc @@ -58,12 +58,10 @@ Application::Application(const Application& o) // \brief Application Destructor Application::~Application() -{ - Dispose (); -} +{} void -Application::Dispose (void) +Application::DoDispose (void) { if (m_node != 0) { diff --git a/src/node/application.h b/src/node/application.h index dd49267df..9d6c4cb4d 100644 --- a/src/node/application.h +++ b/src/node/application.h @@ -63,8 +63,6 @@ public: Application(const Application&); // Copy constructor Application& operator=(const Application&); // Assignment operator virtual ~Application(); - - virtual void Dispose (void); virtual Application* Copy() const = 0; // All applications must provide @@ -129,6 +127,7 @@ protected: // subclasses. virtual void StopApplication(); + virtual void DoDispose (void); private: // Helpers void ScheduleStart(); diff --git a/src/node/net-device.cc b/src/node/net-device.cc index 221a2e68d..3565a0e4c 100644 --- a/src/node/net-device.cc +++ b/src/node/net-device.cc @@ -235,7 +235,7 @@ NetDevice::SetReceiveCallback (Callback cb); - - virtual void Dispose(); protected: /** @@ -218,6 +216,8 @@ public: */ bool ForwardUp (Packet& p); + virtual void DoDispose (void); + private: /** * \param p packet to send diff --git a/src/node/onoff-application.cc b/src/node/onoff-application.cc index 91f5ed8c5..9c0808477 100644 --- a/src/node/onoff-application.cc +++ b/src/node/onoff-application.cc @@ -87,12 +87,10 @@ OnOffApplication::OnOffApplication(Node * n, const OnOffApplication& c) } OnOffApplication::~OnOffApplication() -{ - Dispose (); -} +{} void -OnOffApplication::Dispose (void) +OnOffApplication::DoDispose (void) { if (m_socket != 0) { @@ -106,7 +104,7 @@ OnOffApplication::Dispose (void) m_offTime = 0; // chain up - Application::Dispose (); + Application::DoDispose (); } #ifdef REMOVE_THIS diff --git a/src/node/onoff-application.h b/src/node/onoff-application.h index e04319de2..b259f7682 100644 --- a/src/node/onoff-application.h +++ b/src/node/onoff-application.h @@ -54,8 +54,6 @@ public: virtual void StopApplication(); // Called at time specified by Stop virtual OnOffApplication* Copy() const;// Make a copy of the application - virtual void Dispose (void); - // Event handlers void StartSending(); void StopSending(); @@ -63,6 +61,9 @@ public: virtual void MaxBytes(uint32_t m) { m_maxBytes = m;} +protected: + virtual void DoDispose (void); + public: // Static methods static void DefaultRate(uint64_t r) { g_defaultRate = r;}