src
timeout.cpp
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2009, Willow Garage, Inc.
3
* All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions are met:
7
*
8
* * Redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer.
10
* * Redistributions in binary form must reproduce the above copyright
11
* notice, this list of conditions and the following disclaimer in the
12
* documentation and/or other materials provided with the distribution.
13
* * Neither the name of the Willow Garage, Inc. nor the names of its
14
* contributors may be used to endorse or promote products derived from
15
* this software without specific prior written permission.
16
*
17
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
* POSSIBILITY OF SUCH DAMAGE.
28
*/
29
30
#include "
bondcpp/timeout.h
"
31
32
#include <algorithm>
33
34
namespace
bond
{
35
36
Timeout::Timeout
(
const
ros::Duration
&d,
37
boost::function<
void
(
void
)> on_timeout)
38
: duration_(
d
.sec,
d
.nsec), on_timeout_(on_timeout)
39
{
40
}
41
42
Timeout::Timeout
(
const
ros::WallDuration
&d,
43
boost::function<
void
(
void
)> on_timeout)
44
: duration_(
d
), on_timeout_(on_timeout)
45
{
46
}
47
48
Timeout::~Timeout
()
49
{
50
timer_
.
stop
();
51
}
52
53
void
Timeout::setDuration
(
const
ros::Duration
&d)
54
{
55
duration_
=
ros::WallDuration
(
d
.sec,
d
.nsec);
56
}
57
58
void
Timeout::setDuration
(
const
ros::WallDuration
&d)
59
{
60
duration_
=
d
;
61
}
62
63
64
void
Timeout::reset
()
65
{
66
timer_
.
stop
();
67
timer_
=
nh_
.
createSteadyTimer
(
duration_
, &
Timeout::timerCallback
,
this
,
true
);
68
deadline_
=
ros::SteadyTime::now
() +
duration_
;
69
}
70
71
void
Timeout::cancel
()
72
{
73
timer_
.
stop
();
74
}
75
76
ros::WallDuration
Timeout::left
()
77
{
78
return
std::max(
ros::WallDuration
(0.0),
deadline_
-
ros::SteadyTime::now
());
79
}
80
81
void
Timeout::timerCallback
(
const
ros::SteadyTimerEvent
&)
82
{
83
if
(
on_timeout_
) {
84
on_timeout_
();
85
}
86
}
87
88
}
// namespace bond
bond::Timeout::deadline_
ros::SteadyTime deadline_
Definition:
timeout.h:59
bond::Timeout::timerCallback
void timerCallback(const ros::SteadyTimerEvent &e)
Definition:
timeout.cpp:81
bond::Timeout::setDuration
void setDuration(const ros::Duration &d)
Definition:
timeout.cpp:53
bond::Timeout::reset
void reset()
Definition:
timeout.cpp:64
bond::Timeout::~Timeout
~Timeout()
Definition:
timeout.cpp:48
timeout.h
ros::SteadyTime::now
static SteadyTime now()
ros::SteadyTimer::stop
void stop()
bond::Timeout::timer_
ros::SteadyTimer timer_
Definition:
timeout.h:58
d
d
ros::SteadyTimerEvent
bond::Timeout::left
ros::WallDuration left()
Definition:
timeout.cpp:76
bond
Definition:
bond.h:60
bond::Timeout::duration_
ros::WallDuration duration_
Definition:
timeout.h:60
bond::Timeout::nh_
ros::NodeHandle nh_
Definition:
timeout.h:57
ros::NodeHandle::createSteadyTimer
SteadyTimer createSteadyTimer(SteadyTimerOptions &ops) const
bond::Timeout::on_timeout_
boost::function< void(void)> on_timeout_
Definition:
timeout.h:61
bond::Timeout::Timeout
Timeout(const ros::Duration &d, boost::function< void(void)> on_timeout=boost::function< void(void)>())
Definition:
timeout.cpp:36
ros::WallDuration
ros::Duration
bond::Timeout::cancel
void cancel()
Definition:
timeout.cpp:71
bondcpp
Author(s): Stuart Glaser
autogenerated on Tue Mar 1 2022 23:53:37