A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Documentation ▼
Installation
Manual
Models
Contributing
Wiki
Development ▼
API Docs
Issue Tracker
Merge Requests
API
watchdog.cc
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2007 INRIA
3
*
4
* This program is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License version 2 as
6
* published by the Free Software Foundation;
7
*
8
* This program is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU General Public License for more details.
12
*
13
* You should have received a copy of the GNU General Public License
14
* along with this program; if not, write to the Free Software
15
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16
*
17
* Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
18
*/
19
#include "
watchdog.h
"
20
21
#include "
log.h
"
22
29
namespace
ns3
30
{
31
32
NS_LOG_COMPONENT_DEFINE
(
"Watchdog"
);
33
34
Watchdog::Watchdog
()
35
: m_impl(nullptr),
36
m_event(),
37
m_end(
MicroSeconds
(0))
38
{
39
NS_LOG_FUNCTION_NOARGS
();
40
}
41
42
Watchdog::~Watchdog
()
43
{
44
NS_LOG_FUNCTION
(
this
);
45
m_event
.
Cancel
();
46
delete
m_impl
;
47
}
48
49
void
50
Watchdog::Ping
(
Time
delay)
51
{
52
NS_LOG_FUNCTION
(
this
<< delay);
53
Time
end =
Simulator::Now
() + delay;
54
m_end
=
std::max
(
m_end
, end);
55
if
(
m_event
.
IsRunning
())
56
{
57
return
;
58
}
59
m_event
=
Simulator::Schedule
(
m_end
-
Now
(), &
Watchdog::Expire
,
this
);
60
}
61
62
void
63
Watchdog::Expire
()
64
{
65
NS_LOG_FUNCTION
(
this
);
66
if
(
m_end
==
Simulator::Now
())
67
{
68
m_impl
->
Invoke
();
69
}
70
else
71
{
72
m_event
=
Simulator::Schedule
(
m_end
-
Now
(), &
Watchdog::Expire
,
this
);
73
}
74
}
75
76
}
// namespace ns3
max
#define max(a, b)
Definition:
80211b.c:42
ns3::EventId::Cancel
void Cancel()
This method is syntactic sugar for the ns3::Simulator::Cancel method.
Definition:
event-id.cc:55
ns3::EventId::IsRunning
bool IsRunning() const
This method is syntactic sugar for !IsExpired().
Definition:
event-id.cc:76
ns3::Simulator::Schedule
static EventId Schedule(const Time &delay, FUNC f, Ts &&... args)
Schedule an event to expire after delay.
Definition:
simulator.h:571
ns3::Simulator::Now
static Time Now()
Return the current simulation virtual time.
Definition:
simulator.cc:208
ns3::Time
Simulation virtual time values and global simulation resolution.
Definition:
nstime.h:105
ns3::TimerImpl::Invoke
virtual void Invoke()=0
Invoke the expire function.
ns3::Watchdog::Expire
void Expire()
Internal callback invoked when the timer expires.
Definition:
watchdog.cc:63
ns3::Watchdog::m_event
EventId m_event
The future event scheduled to expire the timer.
Definition:
watchdog.h:120
ns3::Watchdog::~Watchdog
~Watchdog()
Destructor.
Definition:
watchdog.cc:42
ns3::Watchdog::Watchdog
Watchdog()
Constructor.
Definition:
watchdog.cc:34
ns3::Watchdog::Ping
void Ping(Time delay)
Delay the timer.
Definition:
watchdog.cc:50
ns3::Watchdog::m_impl
TimerImpl * m_impl
The timer implementation, which contains the bound callback function and arguments.
Definition:
watchdog.h:118
ns3::Watchdog::m_end
Time m_end
The absolute time when the timer will expire.
Definition:
watchdog.h:122
NS_LOG_COMPONENT_DEFINE
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition:
log.h:202
NS_LOG_FUNCTION_NOARGS
#define NS_LOG_FUNCTION_NOARGS()
Output the name of the function.
Definition:
log-macros-enabled.h:206
NS_LOG_FUNCTION
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
Definition:
log-macros-enabled.h:240
ns3::Now
Time Now()
create an ns3::Time instance which contains the current simulation time.
Definition:
simulator.cc:305
ns3::MicroSeconds
Time MicroSeconds(uint64_t value)
Construct a Time in the indicated unit.
Definition:
nstime.h:1350
log.h
Debug message logging.
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
watchdog.h
ns3::Watchdog timer class declaration.
src
core
model
watchdog.cc
Generated on Sun Mar 3 2024 17:10:56 for ns-3 by
1.9.1