A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Portuguese
Docs ▼
Wiki
Manual
Models
Develop ▼
API
Bugs
API
src
core
model
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
delete
m_impl
;
46
}
47
48
void
49
Watchdog::Ping
(
Time
delay)
50
{
51
NS_LOG_FUNCTION
(
this
<< delay);
52
Time
end =
Simulator::Now
() + delay;
53
m_end
=
std::max
(
m_end
, end);
54
if
(
m_event
.
IsRunning
())
55
{
56
return
;
57
}
58
m_event
=
Simulator::Schedule
(
m_end
-
Now
(), &
Watchdog::Expire
,
this
);
59
}
60
61
void
62
Watchdog::Expire
(
void
)
63
{
64
NS_LOG_FUNCTION
(
this
);
65
if
(
m_end
==
Simulator::Now
())
66
{
67
m_impl
->
Invoke
();
68
}
69
else
70
{
71
m_event
=
Simulator::Schedule
(
m_end
-
Now
(), &
Watchdog::Expire
,
this
);
72
}
73
}
74
75
}
// namespace ns3
76
ns3::Time
Simulation virtual time values and global simulation resolution.
Definition:
nstime.h:102
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:213
ns3::Watchdog::m_end
Time m_end
The absolute time when the timer will expire.
Definition:
watchdog.h:182
ns3::Watchdog::Ping
void Ping(Time delay)
Delay the timer.
Definition:
watchdog.cc:49
NS_LOG_COMPONENT_DEFINE
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition:
log.h:202
ns3::Watchdog::m_event
EventId m_event
The future event scheduled to expire the timer.
Definition:
watchdog.h:180
NS_LOG_FUNCTION_NOARGS
#define NS_LOG_FUNCTION_NOARGS()
Output the name of the function.
Definition:
log-macros-enabled.h:176
watchdog.h
ns3::Watchdog timer class declaration.
ns3::Simulator::Schedule
static EventId Schedule(Time const &delay, MEM mem_ptr, OBJ obj)
Schedule an event to expire after delay.
Definition:
simulator.h:1381
max
#define max(a, b)
Definition:
80211b.c:43
ns3::Watchdog::Watchdog
Watchdog()
Constructor.
Definition:
watchdog.cc:34
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::Watchdog::~Watchdog
~Watchdog()
Destructor.
Definition:
watchdog.cc:42
ns3::Simulator::Now
static Time Now(void)
Return the current simulation virtual time.
Definition:
simulator.cc:249
ns3::Watchdog::m_impl
TimerImpl * m_impl
The timer implementation, which contains the bound callback function and arguments.
Definition:
watchdog.h:178
ns3::EventId::IsRunning
bool IsRunning(void) const
This method is syntactic sugar for !IsExpired().
Definition:
event-id.cc:65
ns3::TimerImpl::Invoke
virtual void Invoke(void)=0
Invoke the expire function.
ns3::MicroSeconds
Time MicroSeconds(uint64_t value)
Construct a Time in the indicated unit.
Definition:
nstime.h:1030
ns3::Now
Time Now(void)
create an ns3::Time instance which contains the current simulation time.
Definition:
simulator.cc:365
log.h
Debug message logging.
ns3::Watchdog::Expire
void Expire(void)
Internal callback invoked when the timer expires.
Definition:
watchdog.cc:62
Generated on Wed Nov 7 2018 10:01:50 for ns-3 by
1.8.14