A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Documentation ▼
Manual
Models
Contributing
Wiki
Development ▼
API Docs
Issue Tracker
Merge Requests
API
watchdog.cc
Go to the documentation of this file.
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* Copyright (c) 2007 INRIA
4
*
5
* This program is free software; you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License version 2 as
7
* published by the Free Software Foundation;
8
*
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License
15
* along with this program; if not, write to the Free Software
16
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
*
18
* Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
19
*/
20
#include "
watchdog.h
"
21
#include "
log.h
"
22
23
30
namespace
ns3
{
31
32
NS_LOG_COMPONENT_DEFINE
(
"Watchdog"
);
33
34
Watchdog::Watchdog
()
35
: m_impl (0),
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
(
void
)
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
77
max
#define max(a, b)
Definition:
80211b.c:43
ns3::EventId::IsRunning
bool IsRunning(void) const
This method is syntactic sugar for !IsExpired().
Definition:
event-id.cc:71
ns3::EventId::Cancel
void Cancel(void)
This method is syntactic sugar for the ns3::Simulator::Cancel method.
Definition:
event-id.cc:53
ns3::Simulator::Schedule
static EventId Schedule(Time const &delay, FUNC f, Ts &&... args)
Schedule an event to expire after delay.
Definition:
simulator.h:556
ns3::Simulator::Now
static Time Now(void)
Return the current simulation virtual time.
Definition:
simulator.cc:195
ns3::Time
Simulation virtual time values and global simulation resolution.
Definition:
nstime.h:103
ns3::TimerImpl::Invoke
virtual void Invoke(void)=0
Invoke the expire function.
ns3::Watchdog::Expire
void Expire(void)
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:121
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:119
ns3::Watchdog::m_end
Time m_end
The absolute time when the timer will expire.
Definition:
watchdog.h:123
NS_LOG_COMPONENT_DEFINE
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition:
log.h:205
NS_LOG_FUNCTION_NOARGS
#define NS_LOG_FUNCTION_NOARGS()
Output the name of the function.
Definition:
log-macros-enabled.h:209
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:244
ns3::Now
Time Now(void)
create an ns3::Time instance which contains the current simulation time.
Definition:
simulator.cc:287
ns3::MicroSeconds
Time MicroSeconds(uint64_t value)
Construct a Time in the indicated unit.
Definition:
nstime.h:1260
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 Tue Feb 6 2024 19:21:17 for ns-3 by
1.9.1