rclcpp
master
C++ ROS Client Library API
include
rclcpp
guard_condition.hpp
Go to the documentation of this file.
1
// Copyright 2020 Open Source Robotics Foundation, Inc.
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
// http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14
15
#ifndef RCLCPP__GUARD_CONDITION_HPP_
16
#define RCLCPP__GUARD_CONDITION_HPP_
17
18
#include <atomic>
19
20
#include "rcl/guard_condition.h"
21
22
#include "
rclcpp/context.hpp
"
23
#include "
rclcpp/contexts/default_context.hpp
"
24
#include "
rclcpp/macros.hpp
"
25
#include "
rclcpp/visibility_control.hpp
"
26
27
namespace
rclcpp
28
{
29
31
class
GuardCondition
32
{
33
public
:
34
RCLCPP_SMART_PTR_DEFINITIONS_NOT_COPYABLE
(
GuardCondition
)
35
36
// TODO(wjwwood): support custom allocator, maybe restrict to polymorphic allocator
38
47
RCLCPP_PUBLIC
48
explicit
GuardCondition
(
49
rclcpp::Context::SharedPtr context =
50
rclcpp::contexts::get_global_default_context
());
51
52
RCLCPP_PUBLIC
53
virtual
54
~GuardCondition
();
55
57
RCLCPP_PUBLIC
58
rclcpp::Context::SharedPtr
59
get_context
()
const
;
60
62
RCLCPP_PUBLIC
63
const
rcl_guard_condition_t
&
64
get_rcl_guard_condition
()
const
;
65
67
74
RCLCPP_PUBLIC
75
void
76
trigger
();
77
79
88
RCLCPP_PUBLIC
89
bool
90
exchange_in_use_by_wait_set_state
(
bool
in_use_state);
91
92
protected
:
93
rclcpp::Context::SharedPtr
context_
;
94
rcl_guard_condition_t
rcl_guard_condition_
;
95
std::atomic<bool>
in_use_by_wait_set_
{
false
};
96
};
97
98
}
// namespace rclcpp
99
100
#endif // RCLCPP__GUARD_CONDITION_HPP_
rclcpp::GuardCondition
A condition that can be waited on in a single wait set and asynchronously triggered.
Definition:
guard_condition.hpp:31
rclcpp::GuardCondition::trigger
void trigger()
Notify the wait set waiting on this condition, if any, that the condition had been met.
rclcpp::GuardCondition::get_rcl_guard_condition
const rcl_guard_condition_t & get_rcl_guard_condition() const
Return the underlying rcl guard condition structure.
rclcpp::GuardCondition::context_
rclcpp::Context::SharedPtr context_
Definition:
guard_condition.hpp:93
rclcpp::GuardCondition::GuardCondition
GuardCondition(rclcpp::Context::SharedPtr context=rclcpp::contexts::get_global_default_context())
Construct the guard condition, optionally specifying which Context to use.
context.hpp
rclcpp::GuardCondition::in_use_by_wait_set_
std::atomic< bool > in_use_by_wait_set_
Definition:
guard_condition.hpp:95
rcl_guard_condition_t
rclcpp::GuardCondition::rcl_guard_condition_
rcl_guard_condition_t rcl_guard_condition_
Definition:
guard_condition.hpp:94
rclcpp::contexts::get_global_default_context
DefaultContext::SharedPtr get_global_default_context()
Definition:
default_context.hpp:49
rclcpp
This header provides the get_node_base_interface() template function.
Definition:
allocator_common.hpp:24
RCLCPP_PUBLIC
#define RCLCPP_PUBLIC
Definition:
visibility_control.hpp:50
macros.hpp
rclcpp::GuardCondition::get_context
rclcpp::Context::SharedPtr get_context() const
Return the context used when creating this guard condition.
rclcpp::GuardCondition::exchange_in_use_by_wait_set_state
bool exchange_in_use_by_wait_set_state(bool in_use_state)
Exchange the "in use by wait set" state for this guard condition.
std::atomic< bool >
default_context.hpp
rclcpp::GuardCondition::~GuardCondition
virtual ~GuardCondition()
visibility_control.hpp
RCLCPP_SMART_PTR_DEFINITIONS_NOT_COPYABLE
#define RCLCPP_SMART_PTR_DEFINITIONS_NOT_COPYABLE(...)
Definition:
macros.hpp:51
Generated by
1.8.17