#include <timer.h>
Collaboration diagram for ns3::Timer:Public Types | |
| enum | DestroyPolicy { CANCEL_ON_DESTROY = (1 << 3), REMOVE_ON_DESTROY = (1 << 4), CHECK_ON_DESTROY = (1 << 5) } |
| The policy to use to manager the internal timer when an instance of the Timer class is destroyed. More... | |
| enum | State { RUNNING, EXPIRED, SUSPENDED } |
| The possible states of the Timer. More... | |
Public Member Functions | |
| Timer () | |
| Create a timer with a default event lifetime management policy: More... | |
| Timer (enum DestroyPolicy destroyPolicy) | |
| ~Timer () | |
| void | Cancel (void) |
| Cancel the currently-running event if there is one. More... | |
| Time | GetDelay (void) const |
| Time | GetDelayLeft (void) const |
| enum Timer::State | GetState (void) const |
| bool | IsExpired (void) const |
| bool | IsRunning (void) const |
| bool | IsSuspended (void) const |
| void | Remove (void) |
| Remove from the simulation event-list the currently-running event if there is one. More... | |
| void | Resume (void) |
| Restart the timer to expire within the amount of time left saved during Suspend. More... | |
| void | Schedule (void) |
| Schedule a new event using the currently-configured delay, function, and arguments. More... | |
| void | Schedule (Time delay) |
| template<typename T1 > | |
| void | SetArguments (T1 a1) |
| template<typename T1 , typename T2 > | |
| void | SetArguments (T1 a1, T2 a2) |
| template<typename T1 , typename T2 , typename T3 > | |
| void | SetArguments (T1 a1, T2 a2, T3 a3) |
| template<typename T1 , typename T2 , typename T3 , typename T4 > | |
| void | SetArguments (T1 a1, T2 a2, T3 a3, T4 a4) |
| template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > | |
| void | SetArguments (T1 a1, T2 a2, T3 a3, T4 a4, T5 a5) |
| template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 > | |
| void | SetArguments (T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6) |
| void | SetDelay (const Time &delay) |
| template<typename FN > | |
| void | SetFunction (FN fn) |
| template<typename MEM_PTR , typename OBJ_PTR > | |
| void | SetFunction (MEM_PTR memPtr, OBJ_PTR objPtr) |
| void | Suspend (void) |
| Cancel the timer and save the amount of time left until it was set to expire. More... | |
Private Types | |
| enum | InternalSuspended { TIMER_SUSPENDED = (1 << 7) } |
| Internal bit marking the suspended state. More... | |
Private Attributes | |
| Time | m_delay |
| The delay configured for this Timer. More... | |
| Time | m_delayLeft |
| The amount of time left on the Timer while it is suspended. More... | |
| EventId | m_event |
| The future event scheduled to expire the timer. More... | |
| int | m_flags |
| Bitfield for Timer State, DestroyPolicy and InternalSuspended. More... | |
| TimerImpl * | m_impl |
| The timer implementation, which contains the bound callback function and arguments. More... | |
A simple Timer class.
A timer is used to hold together a delay, a function to invoke when the delay expires, and a set of arguments to pass to the function when the delay expires.
A Timer can be suspended, resumed, cancelled and queried for the time left, but it can't be extended (except by suspending and resuming.)
A timer can also be used to enforce a set of predefined event lifetime management policies. These policies are specified at construction time and cannot be changed after.
| ns3::Timer::Timer | ( | ) |
Create a timer with a default event lifetime management policy:
Definition at line 35 of file timer.cc.
References NS_LOG_FUNCTION.
| ns3::Timer::Timer | ( | enum DestroyPolicy | destroyPolicy | ) |
| destroyPolicy | the event lifetime management policies to use for destroy events |
Definition at line 44 of file timer.cc.
References NS_LOG_FUNCTION.
| ns3::Timer::~Timer | ( | ) |
Definition at line 53 of file timer.cc.
References ns3::EventId::Cancel(), CANCEL_ON_DESTROY, CHECK_ON_DESTROY, ns3::EventId::IsRunning(), m_event, m_flags, m_impl, NS_FATAL_ERROR, NS_LOG_FUNCTION, ns3::Simulator::Remove(), and REMOVE_ON_DESTROY.
Here is the call graph for this function:| void ns3::Timer::Cancel | ( | void | ) |
Cancel the currently-running event if there is one.
Do nothing otherwise.
Definition at line 109 of file timer.cc.
References ns3::Simulator::Cancel(), m_event, and NS_LOG_FUNCTION.
Referenced by TimerStateTestCase::DoRun(), ns3::aodv::RoutingProtocol::HelloTimerExpire(), ns3::aodv::RoutingProtocol::NotifyInterfaceDown(), ns3::aodv::RoutingProtocol::NotifyRemoveAddress(), ns3::aodv::Neighbors::Purge(), ns3::dsr::RouteCache::PurgeMac(), ns3::aodv::RoutingProtocol::RecvReplyAck(), ns3::aodv::Neighbors::ScheduleTimer(), ns3::dsr::RouteCache::ScheduleTimer(), ns3::dsr::DsrRouting::SendBuffTimerExpire(), ns3::Ipv6AutoconfiguredPrefix::StopPreferredTimer(), and ns3::Ipv6AutoconfiguredPrefix::StopValidTimer().
Here is the call graph for this function:
Here is the caller graph for this function:| Time ns3::Timer::GetDelay | ( | void | ) | const |
Definition at line 81 of file timer.cc.
References m_delay, and NS_LOG_FUNCTION.
| Time ns3::Timer::GetDelayLeft | ( | void | ) | const |
This method returns zero if the timer is in EXPIRED state.
Definition at line 87 of file timer.cc.
References EXPIRED, ns3::Simulator::GetDelayLeft(), GetState(), m_delayLeft, m_event, NS_ASSERT, NS_LOG_FUNCTION, RUNNING, SUSPENDED, and ns3::TimeStep().
Referenced by ns3::dsdv::RoutingProtocol::RecvDsdv(), ns3::aodv::RoutingProtocol::SendRequest(), ns3::aodv::RoutingProtocol::SendRerrMessage(), and ns3::aodv::RoutingProtocol::SendRerrWhenNoRouteToForward().
Here is the call graph for this function:
Here is the caller graph for this function:| enum Timer::State ns3::Timer::GetState | ( | void | ) | const |
Definition at line 139 of file timer.cc.
References EXPIRED, IsExpired(), IsRunning(), IsSuspended(), NS_ASSERT, NS_LOG_FUNCTION, RUNNING, and SUSPENDED.
Referenced by TimerStateTestCase::DoRun(), and GetDelayLeft().
Here is the call graph for this function:
Here is the caller graph for this function:| bool ns3::Timer::IsExpired | ( | void | ) | const |
Definition at line 121 of file timer.cc.
References ns3::EventId::IsExpired(), IsSuspended(), m_event, and NS_LOG_FUNCTION.
Referenced by TimerStateTestCase::DoRun(), and GetState().
Here is the call graph for this function:
Here is the caller graph for this function:| bool ns3::Timer::IsRunning | ( | void | ) | const |
Definition at line 127 of file timer.cc.
References ns3::EventId::IsRunning(), IsSuspended(), m_event, and NS_LOG_FUNCTION.
Referenced by TimerStateTestCase::DoRun(), GetState(), ns3::olsr::RoutingProtocol::QueueMessage(), ns3::dsr::DsrRouting::SendBuffTimerExpire(), ns3::aodv::RoutingProtocol::SendRerrMessage(), ns3::aodv::RoutingProtocol::SendRerrWhenNoRouteToForward(), ns3::Ipv6AutoconfiguredPrefix::StopPreferredTimer(), ns3::Ipv6AutoconfiguredPrefix::StopValidTimer(), and Suspend().
Here is the call graph for this function:
Here is the caller graph for this function:| bool ns3::Timer::IsSuspended | ( | void | ) | const |
Definition at line 133 of file timer.cc.
References m_flags, NS_LOG_FUNCTION, and TIMER_SUSPENDED.
Referenced by ns3::dsr::DsrRouting::CheckSendBuffer(), TimerStateTestCase::DoRun(), GetState(), IsExpired(), and IsRunning().
Here is the caller graph for this function:| void ns3::Timer::Remove | ( | void | ) |
Remove from the simulation event-list the currently-running event if there is one.
Do nothing otherwise.
Definition at line 115 of file timer.cc.
References m_event, NS_LOG_FUNCTION, and ns3::Simulator::Remove().
Here is the call graph for this function:| void ns3::Timer::Resume | ( | void | ) |
Restart the timer to expire within the amount of time left saved during Suspend.
Calling Resume without a prior call to Suspend is an error.
Definition at line 187 of file timer.cc.
References m_delayLeft, m_event, m_flags, m_impl, NS_ASSERT, NS_LOG_FUNCTION, ns3::TimerImpl::Schedule(), and TIMER_SUSPENDED.
Referenced by ns3::dsr::DsrRouting::CheckSendBuffer(), and TimerStateTestCase::DoRun().
Here is the call graph for this function:
Here is the caller graph for this function:| void ns3::Timer::Schedule | ( | void | ) |
Schedule a new event using the currently-configured delay, function, and arguments.
Definition at line 158 of file timer.cc.
References m_delay, and NS_LOG_FUNCTION.
Referenced by ns3::aodv::RoutingProtocol::DoInitialize(), TimerStateTestCase::DoRun(), TimerTemplateTestCase::DoRun(), ns3::dsr::DsrRouting::DsrRouting(), ns3::olsr::RoutingProtocol::HelloTimerExpire(), ns3::aodv::RoutingProtocol::HelloTimerExpire(), ns3::olsr::RoutingProtocol::HnaTimerExpire(), ns3::olsr::RoutingProtocol::MidTimerExpire(), ns3::aodv::Neighbors::Purge(), ns3::dsr::RouteCache::PurgeMac(), ns3::olsr::RoutingProtocol::QueueMessage(), ns3::aodv::RoutingProtocol::RerrRateLimitTimerExpire(), ns3::aodv::RoutingProtocol::RreqRateLimitTimerExpire(), ns3::aodv::Neighbors::ScheduleTimer(), ns3::dsr::RouteCache::ScheduleTimer(), ns3::dsr::DsrRouting::SendBuffTimerExpire(), ns3::dsdv::RoutingProtocol::SendPeriodicUpdate(), ns3::NscTcpL4Protocol::SetNode(), ns3::NscTcpL4Protocol::SoftInterrupt(), ns3::dsdv::RoutingProtocol::Start(), ns3::aodv::RoutingProtocol::Start(), ns3::Ipv6AutoconfiguredPrefix::StartPreferredTimer(), ns3::Ipv6AutoconfiguredPrefix::StartValidTimer(), and ns3::olsr::RoutingProtocol::TcTimerExpire().
Here is the caller graph for this function:| void ns3::Timer::Schedule | ( | Time | delay | ) |
| delay | the delay to use |
Schedule a new event using the specified delay (ignore the delay set by Timer::SetDelay), function, and arguments.
Definition at line 165 of file timer.cc.
References ns3::EventId::IsRunning(), m_event, m_impl, NS_ASSERT, NS_FATAL_ERROR, NS_LOG_FUNCTION, and ns3::TimerImpl::Schedule().
Here is the call graph for this function:| void ns3::Timer::SetArguments | ( | T1 | a1 | ) |
| a1 | the first argument |
Store this argument in this Timer for later use by Timer::Schedule.
Definition at line 320 of file timer.h.
References m_impl, NS_FATAL_ERROR, and ns3::TimerImpl::SetArgs().
Referenced by TimerStateTestCase::DoRun(), TimerTemplateTestCase::DoRun(), and ns3::aodv::RoutingProtocol::SendReplyByIntermediateNode().
Here is the call graph for this function:
Here is the caller graph for this function:| void ns3::Timer::SetArguments | ( | T1 | a1, |
| T2 | a2 | ||
| ) |
| a1 | the first argument |
| a2 | the second argument |
Store these arguments in this Timer for later use by Timer::Schedule.
Definition at line 331 of file timer.h.
References m_impl, NS_FATAL_ERROR, and ns3::TimerImpl::SetArgs().
Here is the call graph for this function:| void ns3::Timer::SetArguments | ( | T1 | a1, |
| T2 | a2, | ||
| T3 | a3 | ||
| ) |
| a1 | the first argument |
| a2 | the second argument |
| a3 | the third argument |
Store these arguments in this Timer for later use by Timer::Schedule.
Definition at line 343 of file timer.h.
References m_impl, NS_FATAL_ERROR, and ns3::TimerImpl::SetArgs().
Here is the call graph for this function:| void ns3::Timer::SetArguments | ( | T1 | a1, |
| T2 | a2, | ||
| T3 | a3, | ||
| T4 | a4 | ||
| ) |
| a1 | the first argument |
| a2 | the second argument |
| a3 | the third argument |
| a4 | the fourth argument |
Store these arguments in this Timer for later use by Timer::Schedule.
Definition at line 355 of file timer.h.
References m_impl, NS_FATAL_ERROR, and ns3::TimerImpl::SetArgs().
Here is the call graph for this function:| void ns3::Timer::SetArguments | ( | T1 | a1, |
| T2 | a2, | ||
| T3 | a3, | ||
| T4 | a4, | ||
| T5 | a5 | ||
| ) |
| a1 | the first argument |
| a2 | the second argument |
| a3 | the third argument |
| a4 | the fourth argument |
| a5 | the fifth argument |
Store these arguments in this Timer for later use by Timer::Schedule.
Definition at line 367 of file timer.h.
References m_impl, NS_FATAL_ERROR, and ns3::TimerImpl::SetArgs().
Here is the call graph for this function:| void ns3::Timer::SetArguments | ( | T1 | a1, |
| T2 | a2, | ||
| T3 | a3, | ||
| T4 | a4, | ||
| T5 | a5, | ||
| T6 | a6 | ||
| ) |
| a1 | the first argument |
| a2 | the second argument |
| a3 | the third argument |
| a4 | the fourth argument |
| a5 | the fifth argument |
| a6 | the sixth argument |
Store these arguments in this Timer for later use by Timer::Schedule.
Definition at line 379 of file timer.h.
References m_impl, NS_FATAL_ERROR, and ns3::TimerImpl::SetArgs().
Here is the call graph for this function:| void ns3::Timer::SetDelay | ( | const Time & | delay | ) |
| delay | the delay |
The next call to Schedule will schedule the timer with this delay.
Definition at line 75 of file timer.cc.
References m_delay, and NS_LOG_FUNCTION.
Referenced by TimerStateTestCase::DoRun(), TimerTemplateTestCase::DoRun(), ns3::aodv::Neighbors::Neighbors(), ns3::olsr::RoutingProtocol::QueueMessage(), ns3::dsr::RouteCache::RouteCache(), ns3::aodv::RoutingProtocol::SendReplyByIntermediateNode(), ns3::NscTcpL4Protocol::SetNode(), ns3::Ipv6AutoconfiguredPrefix::StartPreferredTimer(), and ns3::Ipv6AutoconfiguredPrefix::StartValidTimer().
Here is the caller graph for this function:| void ns3::Timer::SetFunction | ( | FN | fn | ) |
| fn | the function |
Store this function in this Timer for later use by Timer::Schedule.
Definition at line 305 of file timer.h.
References m_impl, and ns3::MakeTimerImpl().
Referenced by ns3::aodv::RoutingProtocol::DoInitialize(), TimerStateTestCase::DoRun(), TimerTemplateTestCase::DoRun(), ns3::dsr::DsrRouting::DsrRouting(), ns3::aodv::Neighbors::Neighbors(), ns3::dsr::RouteCache::RouteCache(), ns3::aodv::RoutingProtocol::SendReplyByIntermediateNode(), ns3::olsr::RoutingProtocol::SetIpv4(), ns3::NscTcpL4Protocol::SetNode(), ns3::dsdv::RoutingProtocol::Start(), ns3::aodv::RoutingProtocol::Start(), ns3::Ipv6AutoconfiguredPrefix::StartPreferredTimer(), and ns3::Ipv6AutoconfiguredPrefix::StartValidTimer().
Here is the call graph for this function:
Here is the caller graph for this function:| void ns3::Timer::SetFunction | ( | MEM_PTR | memPtr, |
| OBJ_PTR | objPtr | ||
| ) |
| memPtr | the member function pointer |
| objPtr | the pointer to object |
Store this function and object in this Timer for later use by Timer::Schedule.
Definition at line 312 of file timer.h.
References m_impl, and ns3::MakeTimerImpl().
Here is the call graph for this function:| void ns3::Timer::Suspend | ( | void | ) |
Cancel the timer and save the amount of time left until it was set to expire.
Calling Suspend on a non-running timer is an error.
Definition at line 177 of file timer.cc.
References ns3::Simulator::GetDelayLeft(), IsRunning(), m_delayLeft, m_event, m_flags, NS_ASSERT, NS_LOG_FUNCTION, ns3::Simulator::Remove(), and TIMER_SUSPENDED.
Referenced by ns3::dsr::DsrRouting::CheckSendBuffer(), and TimerStateTestCase::DoRun().
Here is the call graph for this function:
Here is the caller graph for this function:
|
private |
The delay configured for this Timer.
Definition at line 279 of file timer.h.
Referenced by GetDelay(), Schedule(), and SetDelay().
|
private |
|
private |
The future event scheduled to expire the timer.
Definition at line 281 of file timer.h.
Referenced by Cancel(), GetDelayLeft(), IsExpired(), IsRunning(), Remove(), Resume(), Schedule(), Suspend(), and ~Timer().
|
private |
Bitfield for Timer State, DestroyPolicy and InternalSuspended.
Definition at line 277 of file timer.h.
Referenced by IsSuspended(), Resume(), Suspend(), and ~Timer().
|
private |
The timer implementation, which contains the bound callback function and arguments.
Definition at line 286 of file timer.h.
Referenced by Resume(), Schedule(), SetArguments(), SetFunction(), and ~Timer().