include
actionlib
one_shot_timer.h
Go to the documentation of this file.
1
/*********************************************************************
2
* Software License Agreement (BSD License)
3
*
4
* Copyright (c) 2008, Willow Garage, Inc.
5
* All rights reserved.
6
*
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions
9
* are met:
10
*
11
* * Redistributions of source code must retain the above copyright
12
* notice, this list of conditions and the following disclaimer.
13
* * Redistributions in binary form must reproduce the above
14
* copyright notice, this list of conditions and the following
15
* disclaimer in the documentation and/or other materials provided
16
* with the distribution.
17
* * Neither the name of the Willow Garage nor the names of its
18
* contributors may be used to endorse or promote products derived
19
* from this software without specific prior written permission.
20
*
21
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32
* POSSIBILITY OF SUCH DAMAGE.
33
*********************************************************************/
34
35
#ifndef ACTIONLIB__ONE_SHOT_TIMER_H_
36
#define ACTIONLIB__ONE_SHOT_TIMER_H_
37
38
#include "
ros/ros.h
"
39
#include "boost/bind/bind.hpp"
40
42
class
OneShotTimer
43
{
44
public
:
45
OneShotTimer
()
46
:
active_
(
false
) {}
47
48
void
cb
(
const
ros::TimerEvent
& e)
49
{
50
if
(
active_
) {
51
active_
=
false
;
52
53
if
(
callback_
) {
54
callback_
(e);
55
}
else
{
56
ROS_ERROR_NAMED
(
"actionlib"
,
"Got a nullptr Timer OneShotTimer Callback"
);
57
}
58
}
59
}
60
61
boost::function<void(
const
ros::TimerEvent
& e)>
getCb
()
62
{
63
return
boost::bind(&
OneShotTimer::cb
,
this
, boost::placeholders::_1);
64
}
65
66
void
registerOneShotCb
(boost::function<
void
(
const
ros::TimerEvent
& e)> callback)
67
{
68
callback_
= callback;
69
}
70
71
void
stop
()
72
{
73
// timer_.stop();
74
active_
=
false
;
75
}
76
77
const
ros::Timer
&
operator=
(
const
ros::Timer
& rhs)
78
{
79
active_
=
true
;
80
timer_
= rhs;
81
return
timer_
;
82
}
83
84
private
:
85
ros::Timer
timer_
;
86
bool
active_
;
87
boost::function<void(
const
ros::TimerEvent
& e)>
callback_
;
88
};
89
90
91
#endif // ACTIONLIB__ONE_SHOT_TIMER_H_
OneShotTimer::operator=
const ros::Timer & operator=(const ros::Timer &rhs)
Definition:
one_shot_timer.h:109
ros.h
ROS_ERROR_NAMED
#define ROS_ERROR_NAMED(name,...)
OneShotTimer::OneShotTimer
OneShotTimer()
Definition:
one_shot_timer.h:77
OneShotTimer::stop
void stop()
Definition:
one_shot_timer.h:103
OneShotTimer::cb
void cb(const ros::TimerEvent &e)
Definition:
one_shot_timer.h:80
OneShotTimer::active_
bool active_
Definition:
one_shot_timer.h:118
OneShotTimer::registerOneShotCb
void registerOneShotCb(boost::function< void(const ros::TimerEvent &e)> callback)
Definition:
one_shot_timer.h:98
ros::TimerEvent
OneShotTimer::getCb
boost::function< void(const ros::TimerEvent &e)> getCb()
Definition:
one_shot_timer.h:93
OneShotTimer::callback_
boost::function< void(const ros::TimerEvent &e)> callback_
Definition:
one_shot_timer.h:119
OneShotTimer::timer_
ros::Timer timer_
Definition:
one_shot_timer.h:117
OneShotTimer
Horrible hack until ROS Supports this (ROS Trac #1387)
Definition:
one_shot_timer.h:42
ros::Timer
actionlib
Author(s): Eitan Marder-Eppstein, Vijay Pradeep, Mikael Arguedas
autogenerated on Fri May 19 2023 02:36:55