diff --git a/src/mobility/model/gauss-markov-mobility-model.cc b/src/mobility/model/gauss-markov-mobility-model.cc index 494994b1f..90c932c7b 100644 --- a/src/mobility/model/gauss-markov-mobility-model.cc +++ b/src/mobility/model/gauss-markov-mobility-model.cc @@ -103,6 +103,11 @@ GaussMarkovMobilityModel::GaussMarkovMobilityModel() m_helper.Unpause(); } +GaussMarkovMobilityModel::~GaussMarkovMobilityModel() +{ + m_event.Cancel(); +} + void GaussMarkovMobilityModel::Start() { diff --git a/src/mobility/model/gauss-markov-mobility-model.h b/src/mobility/model/gauss-markov-mobility-model.h index 809fdcf00..0b24bf7a3 100644 --- a/src/mobility/model/gauss-markov-mobility-model.h +++ b/src/mobility/model/gauss-markov-mobility-model.h @@ -87,6 +87,7 @@ class GaussMarkovMobilityModel : public MobilityModel */ static TypeId GetTypeId(); GaussMarkovMobilityModel(); + ~GaussMarkovMobilityModel() override; private: /** diff --git a/src/mobility/model/random-direction-2d-mobility-model.cc b/src/mobility/model/random-direction-2d-mobility-model.cc index b163380f2..8cc0da0ae 100644 --- a/src/mobility/model/random-direction-2d-mobility-model.cc +++ b/src/mobility/model/random-direction-2d-mobility-model.cc @@ -64,6 +64,11 @@ RandomDirection2dMobilityModel::RandomDirection2dMobilityModel() m_direction = CreateObject(); } +RandomDirection2dMobilityModel::~RandomDirection2dMobilityModel() +{ + m_event.Cancel(); +} + void RandomDirection2dMobilityModel::DoDispose() { diff --git a/src/mobility/model/random-direction-2d-mobility-model.h b/src/mobility/model/random-direction-2d-mobility-model.h index aa1b039a0..d70e65913 100644 --- a/src/mobility/model/random-direction-2d-mobility-model.h +++ b/src/mobility/model/random-direction-2d-mobility-model.h @@ -51,6 +51,7 @@ class RandomDirection2dMobilityModel : public MobilityModel */ static TypeId GetTypeId(); RandomDirection2dMobilityModel(); + ~RandomDirection2dMobilityModel() override; private: /** diff --git a/src/mobility/model/random-walk-2d-mobility-model.cc b/src/mobility/model/random-walk-2d-mobility-model.cc index 6c5cbf8b5..96b5fa9ea 100644 --- a/src/mobility/model/random-walk-2d-mobility-model.cc +++ b/src/mobility/model/random-walk-2d-mobility-model.cc @@ -80,6 +80,11 @@ RandomWalk2dMobilityModel::GetTypeId() return tid; } +RandomWalk2dMobilityModel::~RandomWalk2dMobilityModel() +{ + m_event.Cancel(); +} + void RandomWalk2dMobilityModel::DoInitialize() { diff --git a/src/mobility/model/random-walk-2d-mobility-model.h b/src/mobility/model/random-walk-2d-mobility-model.h index 61cb286ae..e846fc97e 100644 --- a/src/mobility/model/random-walk-2d-mobility-model.h +++ b/src/mobility/model/random-walk-2d-mobility-model.h @@ -57,6 +57,8 @@ class RandomWalk2dMobilityModel : public MobilityModel */ static TypeId GetTypeId(); + ~RandomWalk2dMobilityModel() override; + /** An enum representing the different working modes of this module. */ enum Mode { diff --git a/src/mobility/model/random-waypoint-mobility-model.cc b/src/mobility/model/random-waypoint-mobility-model.cc index 871444f8c..5e28d9536 100644 --- a/src/mobility/model/random-waypoint-mobility-model.cc +++ b/src/mobility/model/random-waypoint-mobility-model.cc @@ -59,6 +59,11 @@ RandomWaypointMobilityModel::GetTypeId() return tid; } +RandomWaypointMobilityModel::~RandomWaypointMobilityModel() +{ + m_event.Cancel(); +} + void RandomWaypointMobilityModel::BeginWalk() { diff --git a/src/mobility/model/random-waypoint-mobility-model.h b/src/mobility/model/random-waypoint-mobility-model.h index 877c25358..3cd61c4d0 100644 --- a/src/mobility/model/random-waypoint-mobility-model.h +++ b/src/mobility/model/random-waypoint-mobility-model.h @@ -59,6 +59,8 @@ class RandomWaypointMobilityModel : public MobilityModel */ static TypeId GetTypeId(); + ~RandomWaypointMobilityModel() override; + protected: void DoInitialize() override; diff --git a/src/mobility/model/steady-state-random-waypoint-mobility-model.cc b/src/mobility/model/steady-state-random-waypoint-mobility-model.cc index 668e3396c..146aeb5fb 100644 --- a/src/mobility/model/steady-state-random-waypoint-mobility-model.cc +++ b/src/mobility/model/steady-state-random-waypoint-mobility-model.cc @@ -101,6 +101,11 @@ SteadyStateRandomWaypointMobilityModel::SteadyStateRandomWaypointMobilityModel() m_position = CreateObject(); } +SteadyStateRandomWaypointMobilityModel::~SteadyStateRandomWaypointMobilityModel() +{ + m_event.Cancel(); +} + void SteadyStateRandomWaypointMobilityModel::DoInitialize() { diff --git a/src/mobility/model/steady-state-random-waypoint-mobility-model.h b/src/mobility/model/steady-state-random-waypoint-mobility-model.h index d2520265b..755a37f07 100644 --- a/src/mobility/model/steady-state-random-waypoint-mobility-model.h +++ b/src/mobility/model/steady-state-random-waypoint-mobility-model.h @@ -62,6 +62,7 @@ class SteadyStateRandomWaypointMobilityModel : public MobilityModel */ static TypeId GetTypeId(); SteadyStateRandomWaypointMobilityModel(); + ~SteadyStateRandomWaypointMobilityModel() override; protected: void DoInitialize() override; diff --git a/src/mobility/model/waypoint-mobility-model.cc b/src/mobility/model/waypoint-mobility-model.cc index d44629e80..c241cd464 100644 --- a/src/mobility/model/waypoint-mobility-model.cc +++ b/src/mobility/model/waypoint-mobility-model.cc @@ -77,6 +77,7 @@ WaypointMobilityModel::WaypointMobilityModel() WaypointMobilityModel::~WaypointMobilityModel() { + m_event.Cancel(); } void @@ -102,7 +103,9 @@ WaypointMobilityModel::AddWaypoint(const Waypoint& waypoint) if (!m_lazyNotify) { - Simulator::Schedule(waypoint.time - Simulator::Now(), &WaypointMobilityModel::Update, this); + m_event = Simulator::Schedule(waypoint.time - Simulator::Now(), + &WaypointMobilityModel::Update, + this); } } diff --git a/src/mobility/model/waypoint-mobility-model.h b/src/mobility/model/waypoint-mobility-model.h index 5f31cd47a..065a31473 100644 --- a/src/mobility/model/waypoint-mobility-model.h +++ b/src/mobility/model/waypoint-mobility-model.h @@ -192,6 +192,10 @@ class WaypointMobilityModel : public MobilityModel * \brief The current velocity vector */ mutable Vector m_velocity; + /** + * \brief Update event + */ + EventId m_event; }; } // namespace ns3