mobility: cancel update event when the model is destroyed

This commit is contained in:
Tommaso Pecorella
2024-06-26 13:58:47 -05:00
parent ef6fd8ae36
commit 825994ba1c
12 changed files with 40 additions and 1 deletions

View File

@@ -103,6 +103,11 @@ GaussMarkovMobilityModel::GaussMarkovMobilityModel()
m_helper.Unpause();
}
GaussMarkovMobilityModel::~GaussMarkovMobilityModel()
{
m_event.Cancel();
}
void
GaussMarkovMobilityModel::Start()
{

View File

@@ -87,6 +87,7 @@ class GaussMarkovMobilityModel : public MobilityModel
*/
static TypeId GetTypeId();
GaussMarkovMobilityModel();
~GaussMarkovMobilityModel() override;
private:
/**

View File

@@ -64,6 +64,11 @@ RandomDirection2dMobilityModel::RandomDirection2dMobilityModel()
m_direction = CreateObject<UniformRandomVariable>();
}
RandomDirection2dMobilityModel::~RandomDirection2dMobilityModel()
{
m_event.Cancel();
}
void
RandomDirection2dMobilityModel::DoDispose()
{

View File

@@ -51,6 +51,7 @@ class RandomDirection2dMobilityModel : public MobilityModel
*/
static TypeId GetTypeId();
RandomDirection2dMobilityModel();
~RandomDirection2dMobilityModel() override;
private:
/**

View File

@@ -80,6 +80,11 @@ RandomWalk2dMobilityModel::GetTypeId()
return tid;
}
RandomWalk2dMobilityModel::~RandomWalk2dMobilityModel()
{
m_event.Cancel();
}
void
RandomWalk2dMobilityModel::DoInitialize()
{

View File

@@ -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
{

View File

@@ -59,6 +59,11 @@ RandomWaypointMobilityModel::GetTypeId()
return tid;
}
RandomWaypointMobilityModel::~RandomWaypointMobilityModel()
{
m_event.Cancel();
}
void
RandomWaypointMobilityModel::BeginWalk()
{

View File

@@ -59,6 +59,8 @@ class RandomWaypointMobilityModel : public MobilityModel
*/
static TypeId GetTypeId();
~RandomWaypointMobilityModel() override;
protected:
void DoInitialize() override;

View File

@@ -101,6 +101,11 @@ SteadyStateRandomWaypointMobilityModel::SteadyStateRandomWaypointMobilityModel()
m_position = CreateObject<RandomBoxPositionAllocator>();
}
SteadyStateRandomWaypointMobilityModel::~SteadyStateRandomWaypointMobilityModel()
{
m_event.Cancel();
}
void
SteadyStateRandomWaypointMobilityModel::DoInitialize()
{

View File

@@ -62,6 +62,7 @@ class SteadyStateRandomWaypointMobilityModel : public MobilityModel
*/
static TypeId GetTypeId();
SteadyStateRandomWaypointMobilityModel();
~SteadyStateRandomWaypointMobilityModel() override;
protected:
void DoInitialize() override;

View File

@@ -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);
}
}

View File

@@ -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