deprecate redundant namespaces (#1083)
* deprecate redundant namespaces, move classes to own files, rename some classes Signed-off-by: William Woodall <william@osrfoundation.org> * fixup Signed-off-by: William Woodall <william@osrfoundation.org> * address review comments Signed-off-by: William Woodall <william@osrfoundation.org> * fix ups since rebase Signed-off-by: William Woodall <william@osrfoundation.org> * avoid deprecation warnings from deprecated functions Signed-off-by: William Woodall <william@osrfoundation.org> * more fixes Signed-off-by: William Woodall <william@osrfoundation.org> * another fixup, after another rebase Signed-off-by: William Woodall <william@osrfoundation.org>
This commit is contained in:
parent
52ae3e0337
commit
df3c2ffa8a
74 changed files with 716 additions and 563 deletions
|
@ -39,7 +39,7 @@ set(${PROJECT_NAME}_SRCS
|
||||||
src/rclcpp/detail/utilities.cpp
|
src/rclcpp/detail/utilities.cpp
|
||||||
src/rclcpp/duration.cpp
|
src/rclcpp/duration.cpp
|
||||||
src/rclcpp/event.cpp
|
src/rclcpp/event.cpp
|
||||||
src/rclcpp/exceptions.cpp
|
src/rclcpp/exceptions/exceptions.cpp
|
||||||
src/rclcpp/executable_list.cpp
|
src/rclcpp/executable_list.cpp
|
||||||
src/rclcpp/executor.cpp
|
src/rclcpp/executor.cpp
|
||||||
src/rclcpp/executors.cpp
|
src/rclcpp/executors.cpp
|
||||||
|
@ -48,6 +48,7 @@ set(${PROJECT_NAME}_SRCS
|
||||||
src/rclcpp/executors/single_threaded_executor.cpp
|
src/rclcpp/executors/single_threaded_executor.cpp
|
||||||
src/rclcpp/executors/static_executor_entities_collector.cpp
|
src/rclcpp/executors/static_executor_entities_collector.cpp
|
||||||
src/rclcpp/executors/static_single_threaded_executor.cpp
|
src/rclcpp/executors/static_single_threaded_executor.cpp
|
||||||
|
src/rclcpp/future_return_code.cpp
|
||||||
src/rclcpp/graph_listener.cpp
|
src/rclcpp/graph_listener.cpp
|
||||||
src/rclcpp/guard_condition.cpp
|
src/rclcpp/guard_condition.cpp
|
||||||
src/rclcpp/init_options.cpp
|
src/rclcpp/init_options.cpp
|
||||||
|
|
|
@ -29,8 +29,6 @@
|
||||||
|
|
||||||
namespace rclcpp
|
namespace rclcpp
|
||||||
{
|
{
|
||||||
namespace executor
|
|
||||||
{
|
|
||||||
|
|
||||||
struct AnyExecutable
|
struct AnyExecutable
|
||||||
{
|
{
|
||||||
|
@ -47,10 +45,15 @@ struct AnyExecutable
|
||||||
rclcpp::ClientBase::SharedPtr client;
|
rclcpp::ClientBase::SharedPtr client;
|
||||||
rclcpp::Waitable::SharedPtr waitable;
|
rclcpp::Waitable::SharedPtr waitable;
|
||||||
// These are used to keep the scope on the containing items
|
// These are used to keep the scope on the containing items
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr callback_group;
|
rclcpp::CallbackGroup::SharedPtr callback_group;
|
||||||
rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_base;
|
rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_base;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
namespace executor
|
||||||
|
{
|
||||||
|
|
||||||
|
using AnyExecutable [[deprecated("use rclcpp::AnyExecutable instead")]] = AnyExecutable;
|
||||||
|
|
||||||
} // namespace executor
|
} // namespace executor
|
||||||
} // namespace rclcpp
|
} // namespace rclcpp
|
||||||
|
|
||||||
|
|
|
@ -40,9 +40,6 @@ class NodeTopics;
|
||||||
class NodeWaitables;
|
class NodeWaitables;
|
||||||
} // namespace node_interfaces
|
} // namespace node_interfaces
|
||||||
|
|
||||||
namespace callback_group
|
|
||||||
{
|
|
||||||
|
|
||||||
enum class CallbackGroupType
|
enum class CallbackGroupType
|
||||||
{
|
{
|
||||||
MutuallyExclusive,
|
MutuallyExclusive,
|
||||||
|
@ -162,6 +159,12 @@ private:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
namespace callback_group
|
||||||
|
{
|
||||||
|
|
||||||
|
using CallbackGroupType [[deprecated("use rclcpp::CallbackGroupType instead")]] = CallbackGroupType;
|
||||||
|
using CallbackGroup [[deprecated("use rclcpp::CallbackGroup instead")]] = CallbackGroup;
|
||||||
|
|
||||||
} // namespace callback_group
|
} // namespace callback_group
|
||||||
} // namespace rclcpp
|
} // namespace rclcpp
|
||||||
|
|
||||||
|
|
|
@ -22,8 +22,6 @@ namespace rclcpp
|
||||||
{
|
{
|
||||||
namespace contexts
|
namespace contexts
|
||||||
{
|
{
|
||||||
namespace default_context
|
|
||||||
{
|
|
||||||
|
|
||||||
class DefaultContext : public rclcpp::Context
|
class DefaultContext : public rclcpp::Context
|
||||||
{
|
{
|
||||||
|
@ -38,6 +36,21 @@ RCLCPP_PUBLIC
|
||||||
DefaultContext::SharedPtr
|
DefaultContext::SharedPtr
|
||||||
get_global_default_context();
|
get_global_default_context();
|
||||||
|
|
||||||
|
namespace default_context
|
||||||
|
{
|
||||||
|
|
||||||
|
using DefaultContext
|
||||||
|
[[deprecated("use rclcpp::contexts::DefaultContext instead")]] = DefaultContext;
|
||||||
|
|
||||||
|
[[deprecated("use rclcpp::contexts::get_global_default_context() instead")]]
|
||||||
|
RCLCPP_PUBLIC
|
||||||
|
inline
|
||||||
|
DefaultContext::SharedPtr
|
||||||
|
get_global_default_context()
|
||||||
|
{
|
||||||
|
return rclcpp::contexts::get_global_default_context();
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace default_context
|
} // namespace default_context
|
||||||
} // namespace contexts
|
} // namespace contexts
|
||||||
} // namespace rclcpp
|
} // namespace rclcpp
|
||||||
|
|
|
@ -35,7 +35,7 @@ create_client(
|
||||||
std::shared_ptr<node_interfaces::NodeServicesInterface> node_services,
|
std::shared_ptr<node_interfaces::NodeServicesInterface> node_services,
|
||||||
const std::string & service_name,
|
const std::string & service_name,
|
||||||
const rmw_qos_profile_t & qos_profile,
|
const rmw_qos_profile_t & qos_profile,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group)
|
rclcpp::CallbackGroup::SharedPtr group)
|
||||||
{
|
{
|
||||||
rcl_client_options_t options = rcl_client_get_default_options();
|
rcl_client_options_t options = rcl_client_get_default_options();
|
||||||
options.qos = qos_profile;
|
options.qos = qos_profile;
|
||||||
|
|
|
@ -37,7 +37,7 @@ create_service(
|
||||||
const std::string & service_name,
|
const std::string & service_name,
|
||||||
CallbackT && callback,
|
CallbackT && callback,
|
||||||
const rmw_qos_profile_t & qos_profile,
|
const rmw_qos_profile_t & qos_profile,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group)
|
rclcpp::CallbackGroup::SharedPtr group)
|
||||||
{
|
{
|
||||||
rclcpp::AnyServiceCallback<ServiceT> any_service_callback;
|
rclcpp::AnyServiceCallback<ServiceT> any_service_callback;
|
||||||
any_service_callback.set(std::forward<CallbackT>(callback));
|
any_service_callback.set(std::forward<CallbackT>(callback));
|
||||||
|
|
|
@ -39,7 +39,7 @@ create_timer(
|
||||||
rclcpp::Clock::SharedPtr clock,
|
rclcpp::Clock::SharedPtr clock,
|
||||||
rclcpp::Duration period,
|
rclcpp::Duration period,
|
||||||
CallbackT && callback,
|
CallbackT && callback,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group = nullptr)
|
rclcpp::CallbackGroup::SharedPtr group = nullptr)
|
||||||
{
|
{
|
||||||
auto timer = rclcpp::GenericTimer<CallbackT>::make_shared(
|
auto timer = rclcpp::GenericTimer<CallbackT>::make_shared(
|
||||||
clock,
|
clock,
|
||||||
|
@ -59,7 +59,7 @@ create_timer(
|
||||||
rclcpp::Clock::SharedPtr clock,
|
rclcpp::Clock::SharedPtr clock,
|
||||||
rclcpp::Duration period,
|
rclcpp::Duration period,
|
||||||
CallbackT && callback,
|
CallbackT && callback,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group = nullptr)
|
rclcpp::CallbackGroup::SharedPtr group = nullptr)
|
||||||
{
|
{
|
||||||
return create_timer(
|
return create_timer(
|
||||||
rclcpp::node_interfaces::get_node_base_interface(node),
|
rclcpp::node_interfaces::get_node_base_interface(node),
|
||||||
|
@ -90,7 +90,7 @@ typename rclcpp::WallTimer<CallbackT>::SharedPtr
|
||||||
create_wall_timer(
|
create_wall_timer(
|
||||||
std::chrono::duration<DurationRepT, DurationT> period,
|
std::chrono::duration<DurationRepT, DurationT> period,
|
||||||
CallbackT callback,
|
CallbackT callback,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group,
|
rclcpp::CallbackGroup::SharedPtr group,
|
||||||
node_interfaces::NodeBaseInterface * node_base,
|
node_interfaces::NodeBaseInterface * node_base,
|
||||||
node_interfaces::NodeTimersInterface * node_timers)
|
node_interfaces::NodeTimersInterface * node_timers)
|
||||||
{
|
{
|
||||||
|
|
|
@ -15,265 +15,6 @@
|
||||||
#ifndef RCLCPP__EXCEPTIONS_HPP_
|
#ifndef RCLCPP__EXCEPTIONS_HPP_
|
||||||
#define RCLCPP__EXCEPTIONS_HPP_
|
#define RCLCPP__EXCEPTIONS_HPP_
|
||||||
|
|
||||||
#include <stdexcept>
|
#include "rclcpp/exceptions/exceptions.hpp"
|
||||||
#include <string>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
#include "rcl/error_handling.h"
|
|
||||||
#include "rcl/types.h"
|
|
||||||
#include "rclcpp/visibility_control.hpp"
|
|
||||||
|
|
||||||
#include "rcpputils/join.hpp"
|
|
||||||
|
|
||||||
namespace rclcpp
|
|
||||||
{
|
|
||||||
namespace exceptions
|
|
||||||
{
|
|
||||||
|
|
||||||
/// Thrown when a method is trying to use a node, but it is invalid.
|
|
||||||
class InvalidNodeError : public std::runtime_error
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
InvalidNodeError()
|
|
||||||
: std::runtime_error("node is invalid") {}
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Thrown when a any kind of name (node, namespace, topic, etc.) is invalid.
|
|
||||||
class NameValidationError : public std::invalid_argument
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
NameValidationError(
|
|
||||||
const char * name_type_,
|
|
||||||
const char * name_,
|
|
||||||
const char * error_msg_,
|
|
||||||
size_t invalid_index_)
|
|
||||||
: std::invalid_argument(format_error(name_type_, name_, error_msg_, invalid_index_)),
|
|
||||||
name_type(name_type_), name(name_), error_msg(error_msg_), invalid_index(invalid_index_)
|
|
||||||
{}
|
|
||||||
|
|
||||||
static std::string
|
|
||||||
format_error(
|
|
||||||
const char * name_type,
|
|
||||||
const char * name,
|
|
||||||
const char * error_msg,
|
|
||||||
size_t invalid_index);
|
|
||||||
|
|
||||||
const std::string name_type;
|
|
||||||
const std::string name;
|
|
||||||
const std::string error_msg;
|
|
||||||
const size_t invalid_index;
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Thrown when a node name is invalid.
|
|
||||||
class InvalidNodeNameError : public NameValidationError
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
InvalidNodeNameError(const char * node_name, const char * error_msg, size_t invalid_index)
|
|
||||||
: NameValidationError("node name", node_name, error_msg, invalid_index)
|
|
||||||
{}
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Thrown when a node namespace is invalid.
|
|
||||||
class InvalidNamespaceError : public NameValidationError
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
InvalidNamespaceError(const char * namespace_, const char * error_msg, size_t invalid_index)
|
|
||||||
: NameValidationError("namespace", namespace_, error_msg, invalid_index)
|
|
||||||
{}
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Thrown when a topic name is invalid.
|
|
||||||
class InvalidTopicNameError : public NameValidationError
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
InvalidTopicNameError(const char * namespace_, const char * error_msg, size_t invalid_index)
|
|
||||||
: NameValidationError("topic name", namespace_, error_msg, invalid_index)
|
|
||||||
{}
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Thrown when a service name is invalid.
|
|
||||||
class InvalidServiceNameError : public NameValidationError
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
InvalidServiceNameError(const char * namespace_, const char * error_msg, size_t invalid_index)
|
|
||||||
: NameValidationError("service name", namespace_, error_msg, invalid_index)
|
|
||||||
{}
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Throw a C++ std::exception which was created based on an rcl error.
|
|
||||||
/**
|
|
||||||
* Passing nullptr for reset_error is safe and will avoid calling any function
|
|
||||||
* to reset the error.
|
|
||||||
*
|
|
||||||
* \param ret the return code for the current error state
|
|
||||||
* \param prefix string to prefix to the error if applicable (not all errors have custom messages)
|
|
||||||
* \param error_state error state to create exception from, if nullptr rcl_get_error_state is used
|
|
||||||
* \param reset_error function to be called before throwing which whill clear the error state
|
|
||||||
* \throws std::invalid_argument if ret is RCL_RET_OK
|
|
||||||
* \throws std::runtime_error if the rcl_get_error_state returns 0
|
|
||||||
* \throws RCLErrorBase some child class exception based on ret
|
|
||||||
*/
|
|
||||||
/* *INDENT-OFF* */ // Uncrustify cannot yet understand [[noreturn]] properly
|
|
||||||
RCLCPP_PUBLIC
|
|
||||||
void
|
|
||||||
throw_from_rcl_error [[noreturn]] (
|
|
||||||
rcl_ret_t ret,
|
|
||||||
const std::string & prefix = "",
|
|
||||||
const rcl_error_state_t * error_state = nullptr,
|
|
||||||
void (* reset_error)() = rcl_reset_error);
|
|
||||||
/* *INDENT-ON* */
|
|
||||||
|
|
||||||
class RCLErrorBase
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
RCLCPP_PUBLIC
|
|
||||||
RCLErrorBase(rcl_ret_t ret, const rcl_error_state_t * error_state);
|
|
||||||
virtual ~RCLErrorBase() {}
|
|
||||||
|
|
||||||
rcl_ret_t ret;
|
|
||||||
std::string message;
|
|
||||||
std::string file;
|
|
||||||
size_t line;
|
|
||||||
std::string formatted_message;
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Created when the return code does not match one of the other specialized exceptions.
|
|
||||||
class RCLError : public RCLErrorBase, public std::runtime_error
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
RCLCPP_PUBLIC
|
|
||||||
RCLError(rcl_ret_t ret, const rcl_error_state_t * error_state, const std::string & prefix);
|
|
||||||
RCLCPP_PUBLIC
|
|
||||||
RCLError(const RCLErrorBase & base_exc, const std::string & prefix);
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Created when the ret is RCL_RET_BAD_ALLOC.
|
|
||||||
class RCLBadAlloc : public RCLErrorBase, public std::bad_alloc
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
RCLCPP_PUBLIC
|
|
||||||
RCLBadAlloc(rcl_ret_t ret, const rcl_error_state_t * error_state);
|
|
||||||
RCLCPP_PUBLIC
|
|
||||||
explicit RCLBadAlloc(const RCLErrorBase & base_exc);
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Created when the ret is RCL_RET_INVALID_ARGUMENT.
|
|
||||||
class RCLInvalidArgument : public RCLErrorBase, public std::invalid_argument
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
RCLCPP_PUBLIC
|
|
||||||
RCLInvalidArgument(
|
|
||||||
rcl_ret_t ret,
|
|
||||||
const rcl_error_state_t * error_state,
|
|
||||||
const std::string & prefix);
|
|
||||||
RCLCPP_PUBLIC
|
|
||||||
RCLInvalidArgument(const RCLErrorBase & base_exc, const std::string & prefix);
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Created when the ret is RCL_RET_INVALID_ROS_ARGS.
|
|
||||||
class RCLInvalidROSArgsError : public RCLErrorBase, public std::runtime_error
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
RCLCPP_PUBLIC
|
|
||||||
RCLInvalidROSArgsError(
|
|
||||||
rcl_ret_t ret, const rcl_error_state_t * error_state, const std::string & prefix);
|
|
||||||
RCLCPP_PUBLIC
|
|
||||||
RCLInvalidROSArgsError(const RCLErrorBase & base_exc, const std::string & prefix);
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Thrown when unparsed ROS specific arguments are found.
|
|
||||||
class UnknownROSArgsError : public std::runtime_error
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
explicit UnknownROSArgsError(std::vector<std::string> && unknown_ros_args_in)
|
|
||||||
: std::runtime_error(
|
|
||||||
"found unknown ROS arguments: '" + rcpputils::join(unknown_ros_args_in, "', '") + "'"),
|
|
||||||
unknown_ros_args(unknown_ros_args_in)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
const std::vector<std::string> unknown_ros_args;
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Thrown when an invalid rclcpp::Event object or SharedPtr is encountered.
|
|
||||||
class InvalidEventError : public std::runtime_error
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
InvalidEventError()
|
|
||||||
: std::runtime_error("event is invalid") {}
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Thrown when an unregistered rclcpp::Event is encountered where a registered one was expected.
|
|
||||||
class EventNotRegisteredError : public std::runtime_error
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
EventNotRegisteredError()
|
|
||||||
: std::runtime_error("event already registered") {}
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Thrown if passed parameters are inconsistent or invalid
|
|
||||||
class InvalidParametersException : public std::runtime_error
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
// Inherit constructors from runtime_error.
|
|
||||||
using std::runtime_error::runtime_error;
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Thrown if passed parameter value is invalid.
|
|
||||||
class InvalidParameterValueException : public std::runtime_error
|
|
||||||
{
|
|
||||||
// Inherit constructors from runtime_error.
|
|
||||||
using std::runtime_error::runtime_error;
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Thrown if requested parameter type is invalid.
|
|
||||||
/**
|
|
||||||
* Essentially the same as rclcpp::ParameterTypeException, but with parameter
|
|
||||||
* name in the error message.
|
|
||||||
*/
|
|
||||||
class InvalidParameterTypeException : public std::runtime_error
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
/// Construct an instance.
|
|
||||||
/**
|
|
||||||
* \param[in] name the name of the parameter.
|
|
||||||
* \param[in] message custom exception message.
|
|
||||||
*/
|
|
||||||
RCLCPP_PUBLIC
|
|
||||||
InvalidParameterTypeException(const std::string & name, const std::string message)
|
|
||||||
: std::runtime_error("parameter '" + name + "' has invalid type: " + message)
|
|
||||||
{}
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Thrown if parameter is already declared.
|
|
||||||
class ParameterAlreadyDeclaredException : public std::runtime_error
|
|
||||||
{
|
|
||||||
// Inherit constructors from runtime_error.
|
|
||||||
using std::runtime_error::runtime_error;
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Thrown if parameter is not declared, e.g. either set or get was called without first declaring.
|
|
||||||
class ParameterNotDeclaredException : public std::runtime_error
|
|
||||||
{
|
|
||||||
// Inherit constructors from runtime_error.
|
|
||||||
using std::runtime_error::runtime_error;
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Thrown if parameter is immutable and therefore cannot be undeclared.
|
|
||||||
class ParameterImmutableException : public std::runtime_error
|
|
||||||
{
|
|
||||||
// Inherit constructors from runtime_error.
|
|
||||||
using std::runtime_error::runtime_error;
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Thrown if parameter is modified while in a set callback.
|
|
||||||
class ParameterModifiedInCallbackException : public std::runtime_error
|
|
||||||
{
|
|
||||||
// Inherit constructors from runtime_error.
|
|
||||||
using std::runtime_error::runtime_error;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace exceptions
|
|
||||||
} // namespace rclcpp
|
|
||||||
|
|
||||||
#endif // RCLCPP__EXCEPTIONS_HPP_
|
#endif // RCLCPP__EXCEPTIONS_HPP_
|
||||||
|
|
279
rclcpp/include/rclcpp/exceptions/exceptions.hpp
Normal file
279
rclcpp/include/rclcpp/exceptions/exceptions.hpp
Normal file
|
@ -0,0 +1,279 @@
|
||||||
|
// Copyright 2016 Open Source Robotics Foundation, Inc.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
#ifndef RCLCPP__EXCEPTIONS__EXCEPTIONS_HPP_
|
||||||
|
#define RCLCPP__EXCEPTIONS__EXCEPTIONS_HPP_
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
#include "rcl/error_handling.h"
|
||||||
|
#include "rcl/types.h"
|
||||||
|
#include "rclcpp/visibility_control.hpp"
|
||||||
|
|
||||||
|
#include "rcpputils/join.hpp"
|
||||||
|
|
||||||
|
namespace rclcpp
|
||||||
|
{
|
||||||
|
namespace exceptions
|
||||||
|
{
|
||||||
|
|
||||||
|
/// Thrown when a method is trying to use a node, but it is invalid.
|
||||||
|
class InvalidNodeError : public std::runtime_error
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
InvalidNodeError()
|
||||||
|
: std::runtime_error("node is invalid") {}
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Thrown when a any kind of name (node, namespace, topic, etc.) is invalid.
|
||||||
|
class NameValidationError : public std::invalid_argument
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
NameValidationError(
|
||||||
|
const char * name_type_,
|
||||||
|
const char * name_,
|
||||||
|
const char * error_msg_,
|
||||||
|
size_t invalid_index_)
|
||||||
|
: std::invalid_argument(format_error(name_type_, name_, error_msg_, invalid_index_)),
|
||||||
|
name_type(name_type_), name(name_), error_msg(error_msg_), invalid_index(invalid_index_)
|
||||||
|
{}
|
||||||
|
|
||||||
|
static std::string
|
||||||
|
format_error(
|
||||||
|
const char * name_type,
|
||||||
|
const char * name,
|
||||||
|
const char * error_msg,
|
||||||
|
size_t invalid_index);
|
||||||
|
|
||||||
|
const std::string name_type;
|
||||||
|
const std::string name;
|
||||||
|
const std::string error_msg;
|
||||||
|
const size_t invalid_index;
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Thrown when a node name is invalid.
|
||||||
|
class InvalidNodeNameError : public NameValidationError
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
InvalidNodeNameError(const char * node_name, const char * error_msg, size_t invalid_index)
|
||||||
|
: NameValidationError("node name", node_name, error_msg, invalid_index)
|
||||||
|
{}
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Thrown when a node namespace is invalid.
|
||||||
|
class InvalidNamespaceError : public NameValidationError
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
InvalidNamespaceError(const char * namespace_, const char * error_msg, size_t invalid_index)
|
||||||
|
: NameValidationError("namespace", namespace_, error_msg, invalid_index)
|
||||||
|
{}
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Thrown when a topic name is invalid.
|
||||||
|
class InvalidTopicNameError : public NameValidationError
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
InvalidTopicNameError(const char * namespace_, const char * error_msg, size_t invalid_index)
|
||||||
|
: NameValidationError("topic name", namespace_, error_msg, invalid_index)
|
||||||
|
{}
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Thrown when a service name is invalid.
|
||||||
|
class InvalidServiceNameError : public NameValidationError
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
InvalidServiceNameError(const char * namespace_, const char * error_msg, size_t invalid_index)
|
||||||
|
: NameValidationError("service name", namespace_, error_msg, invalid_index)
|
||||||
|
{}
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Throw a C++ std::exception which was created based on an rcl error.
|
||||||
|
/**
|
||||||
|
* Passing nullptr for reset_error is safe and will avoid calling any function
|
||||||
|
* to reset the error.
|
||||||
|
*
|
||||||
|
* \param ret the return code for the current error state
|
||||||
|
* \param prefix string to prefix to the error if applicable (not all errors have custom messages)
|
||||||
|
* \param error_state error state to create exception from, if nullptr rcl_get_error_state is used
|
||||||
|
* \param reset_error function to be called before throwing which whill clear the error state
|
||||||
|
* \throws std::invalid_argument if ret is RCL_RET_OK
|
||||||
|
* \throws std::runtime_error if the rcl_get_error_state returns 0
|
||||||
|
* \throws RCLErrorBase some child class exception based on ret
|
||||||
|
*/
|
||||||
|
/* *INDENT-OFF* */ // Uncrustify cannot yet understand [[noreturn]] properly
|
||||||
|
RCLCPP_PUBLIC
|
||||||
|
void
|
||||||
|
throw_from_rcl_error [[noreturn]] (
|
||||||
|
rcl_ret_t ret,
|
||||||
|
const std::string & prefix = "",
|
||||||
|
const rcl_error_state_t * error_state = nullptr,
|
||||||
|
void (* reset_error)() = rcl_reset_error);
|
||||||
|
/* *INDENT-ON* */
|
||||||
|
|
||||||
|
class RCLErrorBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
RCLCPP_PUBLIC
|
||||||
|
RCLErrorBase(rcl_ret_t ret, const rcl_error_state_t * error_state);
|
||||||
|
virtual ~RCLErrorBase() {}
|
||||||
|
|
||||||
|
rcl_ret_t ret;
|
||||||
|
std::string message;
|
||||||
|
std::string file;
|
||||||
|
size_t line;
|
||||||
|
std::string formatted_message;
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Created when the return code does not match one of the other specialized exceptions.
|
||||||
|
class RCLError : public RCLErrorBase, public std::runtime_error
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
RCLCPP_PUBLIC
|
||||||
|
RCLError(rcl_ret_t ret, const rcl_error_state_t * error_state, const std::string & prefix);
|
||||||
|
RCLCPP_PUBLIC
|
||||||
|
RCLError(const RCLErrorBase & base_exc, const std::string & prefix);
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Created when the ret is RCL_RET_BAD_ALLOC.
|
||||||
|
class RCLBadAlloc : public RCLErrorBase, public std::bad_alloc
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
RCLCPP_PUBLIC
|
||||||
|
RCLBadAlloc(rcl_ret_t ret, const rcl_error_state_t * error_state);
|
||||||
|
RCLCPP_PUBLIC
|
||||||
|
explicit RCLBadAlloc(const RCLErrorBase & base_exc);
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Created when the ret is RCL_RET_INVALID_ARGUMENT.
|
||||||
|
class RCLInvalidArgument : public RCLErrorBase, public std::invalid_argument
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
RCLCPP_PUBLIC
|
||||||
|
RCLInvalidArgument(
|
||||||
|
rcl_ret_t ret,
|
||||||
|
const rcl_error_state_t * error_state,
|
||||||
|
const std::string & prefix);
|
||||||
|
RCLCPP_PUBLIC
|
||||||
|
RCLInvalidArgument(const RCLErrorBase & base_exc, const std::string & prefix);
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Created when the ret is RCL_RET_INVALID_ROS_ARGS.
|
||||||
|
class RCLInvalidROSArgsError : public RCLErrorBase, public std::runtime_error
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
RCLCPP_PUBLIC
|
||||||
|
RCLInvalidROSArgsError(
|
||||||
|
rcl_ret_t ret, const rcl_error_state_t * error_state, const std::string & prefix);
|
||||||
|
RCLCPP_PUBLIC
|
||||||
|
RCLInvalidROSArgsError(const RCLErrorBase & base_exc, const std::string & prefix);
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Thrown when unparsed ROS specific arguments are found.
|
||||||
|
class UnknownROSArgsError : public std::runtime_error
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit UnknownROSArgsError(std::vector<std::string> && unknown_ros_args_in)
|
||||||
|
: std::runtime_error(
|
||||||
|
"found unknown ROS arguments: '" + rcpputils::join(unknown_ros_args_in, "', '") + "'"),
|
||||||
|
unknown_ros_args(unknown_ros_args_in)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::vector<std::string> unknown_ros_args;
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Thrown when an invalid rclcpp::Event object or SharedPtr is encountered.
|
||||||
|
class InvalidEventError : public std::runtime_error
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
InvalidEventError()
|
||||||
|
: std::runtime_error("event is invalid") {}
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Thrown when an unregistered rclcpp::Event is encountered where a registered one was expected.
|
||||||
|
class EventNotRegisteredError : public std::runtime_error
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
EventNotRegisteredError()
|
||||||
|
: std::runtime_error("event already registered") {}
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Thrown if passed parameters are inconsistent or invalid
|
||||||
|
class InvalidParametersException : public std::runtime_error
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// Inherit constructors from runtime_error.
|
||||||
|
using std::runtime_error::runtime_error;
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Thrown if passed parameter value is invalid.
|
||||||
|
class InvalidParameterValueException : public std::runtime_error
|
||||||
|
{
|
||||||
|
// Inherit constructors from runtime_error.
|
||||||
|
using std::runtime_error::runtime_error;
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Thrown if requested parameter type is invalid.
|
||||||
|
/**
|
||||||
|
* Essentially the same as rclcpp::ParameterTypeException, but with parameter
|
||||||
|
* name in the error message.
|
||||||
|
*/
|
||||||
|
class InvalidParameterTypeException : public std::runtime_error
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/// Construct an instance.
|
||||||
|
/**
|
||||||
|
* \param[in] name the name of the parameter.
|
||||||
|
* \param[in] message custom exception message.
|
||||||
|
*/
|
||||||
|
RCLCPP_PUBLIC
|
||||||
|
InvalidParameterTypeException(const std::string & name, const std::string message)
|
||||||
|
: std::runtime_error("parameter '" + name + "' has invalid type: " + message)
|
||||||
|
{}
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Thrown if parameter is already declared.
|
||||||
|
class ParameterAlreadyDeclaredException : public std::runtime_error
|
||||||
|
{
|
||||||
|
// Inherit constructors from runtime_error.
|
||||||
|
using std::runtime_error::runtime_error;
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Thrown if parameter is not declared, e.g. either set or get was called without first declaring.
|
||||||
|
class ParameterNotDeclaredException : public std::runtime_error
|
||||||
|
{
|
||||||
|
// Inherit constructors from runtime_error.
|
||||||
|
using std::runtime_error::runtime_error;
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Thrown if parameter is immutable and therefore cannot be undeclared.
|
||||||
|
class ParameterImmutableException : public std::runtime_error
|
||||||
|
{
|
||||||
|
// Inherit constructors from runtime_error.
|
||||||
|
using std::runtime_error::runtime_error;
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Thrown if parameter is modified while in a set callback.
|
||||||
|
class ParameterModifiedInCallbackException : public std::runtime_error
|
||||||
|
{
|
||||||
|
// Inherit constructors from runtime_error.
|
||||||
|
using std::runtime_error::runtime_error;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace exceptions
|
||||||
|
} // namespace rclcpp
|
||||||
|
|
||||||
|
#endif // RCLCPP__EXCEPTIONS__EXCEPTIONS_HPP_
|
|
@ -30,6 +30,8 @@
|
||||||
#include "rcl/wait.h"
|
#include "rcl/wait.h"
|
||||||
|
|
||||||
#include "rclcpp/contexts/default_context.hpp"
|
#include "rclcpp/contexts/default_context.hpp"
|
||||||
|
#include "rclcpp/executor_options.hpp"
|
||||||
|
#include "rclcpp/future_return_code.hpp"
|
||||||
#include "rclcpp/memory_strategies.hpp"
|
#include "rclcpp/memory_strategies.hpp"
|
||||||
#include "rclcpp/memory_strategy.hpp"
|
#include "rclcpp/memory_strategy.hpp"
|
||||||
#include "rclcpp/node_interfaces/node_base_interface.hpp"
|
#include "rclcpp/node_interfaces/node_base_interface.hpp"
|
||||||
|
@ -42,48 +44,6 @@ namespace rclcpp
|
||||||
// Forward declaration is used in convenience method signature.
|
// Forward declaration is used in convenience method signature.
|
||||||
class Node;
|
class Node;
|
||||||
|
|
||||||
namespace executor
|
|
||||||
{
|
|
||||||
|
|
||||||
/// Return codes to be used with spin_until_future_complete.
|
|
||||||
/**
|
|
||||||
* SUCCESS: The future is complete and can be accessed with "get" without blocking.
|
|
||||||
* This does not indicate that the operation succeeded; "get" may still throw an exception.
|
|
||||||
* INTERRUPTED: The future is not complete, spinning was interrupted by Ctrl-C or another error.
|
|
||||||
* TIMEOUT: Spinning timed out.
|
|
||||||
*/
|
|
||||||
enum class FutureReturnCode {SUCCESS, INTERRUPTED, TIMEOUT};
|
|
||||||
|
|
||||||
RCLCPP_PUBLIC
|
|
||||||
std::ostream &
|
|
||||||
operator<<(std::ostream & os, const FutureReturnCode & future_return_code);
|
|
||||||
|
|
||||||
RCLCPP_PUBLIC
|
|
||||||
std::string
|
|
||||||
to_string(const FutureReturnCode & future_return_code);
|
|
||||||
|
|
||||||
///
|
|
||||||
/**
|
|
||||||
* Options to be passed to the executor constructor.
|
|
||||||
*/
|
|
||||||
struct ExecutorArgs
|
|
||||||
{
|
|
||||||
ExecutorArgs()
|
|
||||||
: memory_strategy(memory_strategies::create_default_strategy()),
|
|
||||||
context(rclcpp::contexts::default_context::get_global_default_context()),
|
|
||||||
max_conditions(0)
|
|
||||||
{}
|
|
||||||
|
|
||||||
memory_strategy::MemoryStrategy::SharedPtr memory_strategy;
|
|
||||||
std::shared_ptr<rclcpp::Context> context;
|
|
||||||
size_t max_conditions;
|
|
||||||
};
|
|
||||||
|
|
||||||
static inline ExecutorArgs create_default_executor_arguments()
|
|
||||||
{
|
|
||||||
return ExecutorArgs();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Coordinate the order and timing of available communication tasks.
|
/// Coordinate the order and timing of available communication tasks.
|
||||||
/**
|
/**
|
||||||
* Executor provides spin functions (including spin_node_once and spin_some).
|
* Executor provides spin functions (including spin_node_once and spin_some).
|
||||||
|
@ -100,9 +60,11 @@ public:
|
||||||
RCLCPP_SMART_PTR_DEFINITIONS_NOT_COPYABLE(Executor)
|
RCLCPP_SMART_PTR_DEFINITIONS_NOT_COPYABLE(Executor)
|
||||||
|
|
||||||
/// Default constructor.
|
/// Default constructor.
|
||||||
// \param[in] ms The memory strategy to be used with this executor.
|
/**
|
||||||
|
* \param[in] options Options used to configure the executor.
|
||||||
|
*/
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
explicit Executor(const ExecutorArgs & args = ExecutorArgs());
|
explicit Executor(const rclcpp::ExecutorOptions & options = rclcpp::ExecutorOptions());
|
||||||
|
|
||||||
/// Default destructor.
|
/// Default destructor.
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
|
@ -323,10 +285,10 @@ protected:
|
||||||
|
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
rclcpp::node_interfaces::NodeBaseInterface::SharedPtr
|
rclcpp::node_interfaces::NodeBaseInterface::SharedPtr
|
||||||
get_node_by_group(rclcpp::callback_group::CallbackGroup::SharedPtr group);
|
get_node_by_group(rclcpp::CallbackGroup::SharedPtr group);
|
||||||
|
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr
|
rclcpp::CallbackGroup::SharedPtr
|
||||||
get_group_by_timer(rclcpp::TimerBase::SharedPtr timer);
|
get_group_by_timer(rclcpp::TimerBase::SharedPtr timer);
|
||||||
|
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
|
@ -363,6 +325,11 @@ protected:
|
||||||
std::list<const rcl_guard_condition_t *> guard_conditions_;
|
std::list<const rcl_guard_condition_t *> guard_conditions_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
namespace executor
|
||||||
|
{
|
||||||
|
|
||||||
|
using Executor [[deprecated("use rclcpp::Executor instead")]] = rclcpp::Executor;
|
||||||
|
|
||||||
} // namespace executor
|
} // namespace executor
|
||||||
} // namespace rclcpp
|
} // namespace rclcpp
|
||||||
|
|
||||||
|
|
57
rclcpp/include/rclcpp/executor_options.hpp
Normal file
57
rclcpp/include/rclcpp/executor_options.hpp
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
// Copyright 2014-2020 Open Source Robotics Foundation, Inc.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
#ifndef RCLCPP__EXECUTOR_OPTIONS_HPP_
|
||||||
|
#define RCLCPP__EXECUTOR_OPTIONS_HPP_
|
||||||
|
|
||||||
|
#include "rclcpp/context.hpp"
|
||||||
|
#include "rclcpp/contexts/default_context.hpp"
|
||||||
|
#include "rclcpp/memory_strategies.hpp"
|
||||||
|
#include "rclcpp/memory_strategy.hpp"
|
||||||
|
#include "rclcpp/visibility_control.hpp"
|
||||||
|
|
||||||
|
namespace rclcpp
|
||||||
|
{
|
||||||
|
|
||||||
|
/// Options to be passed to the executor constructor.
|
||||||
|
struct ExecutorOptions
|
||||||
|
{
|
||||||
|
ExecutorOptions()
|
||||||
|
: memory_strategy(rclcpp::memory_strategies::create_default_strategy()),
|
||||||
|
context(rclcpp::contexts::get_global_default_context()),
|
||||||
|
max_conditions(0)
|
||||||
|
{}
|
||||||
|
|
||||||
|
rclcpp::memory_strategy::MemoryStrategy::SharedPtr memory_strategy;
|
||||||
|
rclcpp::Context::SharedPtr context;
|
||||||
|
size_t max_conditions;
|
||||||
|
};
|
||||||
|
|
||||||
|
namespace executor
|
||||||
|
{
|
||||||
|
|
||||||
|
using ExecutorArgs [[deprecated("use rclcpp::ExecutorOptions instead")]] = ExecutorOptions;
|
||||||
|
|
||||||
|
[[deprecated("use rclcpp::ExecutorOptions() instead")]]
|
||||||
|
inline
|
||||||
|
rclcpp::ExecutorOptions
|
||||||
|
create_default_executor_arguments()
|
||||||
|
{
|
||||||
|
return rclcpp::ExecutorOptions();
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace executor
|
||||||
|
} // namespace rclcpp
|
||||||
|
|
||||||
|
#endif // RCLCPP__EXECUTOR_OPTIONS_HPP_
|
|
@ -67,9 +67,9 @@ using rclcpp::executors::SingleThreadedExecutor;
|
||||||
* \return The return code, one of `SUCCESS`, `INTERRUPTED`, or `TIMEOUT`.
|
* \return The return code, one of `SUCCESS`, `INTERRUPTED`, or `TIMEOUT`.
|
||||||
*/
|
*/
|
||||||
template<typename ResponseT, typename TimeRepT = int64_t, typename TimeT = std::milli>
|
template<typename ResponseT, typename TimeRepT = int64_t, typename TimeT = std::milli>
|
||||||
rclcpp::executor::FutureReturnCode
|
rclcpp::FutureReturnCode
|
||||||
spin_node_until_future_complete(
|
spin_node_until_future_complete(
|
||||||
rclcpp::executor::Executor & executor,
|
rclcpp::Executor & executor,
|
||||||
rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_ptr,
|
rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_ptr,
|
||||||
const std::shared_future<ResponseT> & future,
|
const std::shared_future<ResponseT> & future,
|
||||||
std::chrono::duration<TimeRepT, TimeT> timeout = std::chrono::duration<TimeRepT, TimeT>(-1))
|
std::chrono::duration<TimeRepT, TimeT> timeout = std::chrono::duration<TimeRepT, TimeT>(-1))
|
||||||
|
@ -84,9 +84,9 @@ spin_node_until_future_complete(
|
||||||
|
|
||||||
template<typename NodeT = rclcpp::Node, typename ResponseT, typename TimeRepT = int64_t,
|
template<typename NodeT = rclcpp::Node, typename ResponseT, typename TimeRepT = int64_t,
|
||||||
typename TimeT = std::milli>
|
typename TimeT = std::milli>
|
||||||
rclcpp::executor::FutureReturnCode
|
rclcpp::FutureReturnCode
|
||||||
spin_node_until_future_complete(
|
spin_node_until_future_complete(
|
||||||
rclcpp::executor::Executor & executor,
|
rclcpp::Executor & executor,
|
||||||
std::shared_ptr<NodeT> node_ptr,
|
std::shared_ptr<NodeT> node_ptr,
|
||||||
const std::shared_future<ResponseT> & future,
|
const std::shared_future<ResponseT> & future,
|
||||||
std::chrono::duration<TimeRepT, TimeT> timeout = std::chrono::duration<TimeRepT, TimeT>(-1))
|
std::chrono::duration<TimeRepT, TimeT> timeout = std::chrono::duration<TimeRepT, TimeT>(-1))
|
||||||
|
@ -101,7 +101,7 @@ spin_node_until_future_complete(
|
||||||
} // namespace executors
|
} // namespace executors
|
||||||
|
|
||||||
template<typename FutureT, typename TimeRepT = int64_t, typename TimeT = std::milli>
|
template<typename FutureT, typename TimeRepT = int64_t, typename TimeT = std::milli>
|
||||||
rclcpp::executor::FutureReturnCode
|
rclcpp::FutureReturnCode
|
||||||
spin_until_future_complete(
|
spin_until_future_complete(
|
||||||
rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_ptr,
|
rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_ptr,
|
||||||
const std::shared_future<FutureT> & future,
|
const std::shared_future<FutureT> & future,
|
||||||
|
@ -113,7 +113,7 @@ spin_until_future_complete(
|
||||||
|
|
||||||
template<typename NodeT = rclcpp::Node, typename FutureT, typename TimeRepT = int64_t,
|
template<typename NodeT = rclcpp::Node, typename FutureT, typename TimeRepT = int64_t,
|
||||||
typename TimeT = std::milli>
|
typename TimeT = std::milli>
|
||||||
rclcpp::executor::FutureReturnCode
|
rclcpp::FutureReturnCode
|
||||||
spin_until_future_complete(
|
spin_until_future_complete(
|
||||||
std::shared_ptr<NodeT> node_ptr,
|
std::shared_ptr<NodeT> node_ptr,
|
||||||
const std::shared_future<FutureT> & future,
|
const std::shared_future<FutureT> & future,
|
||||||
|
|
|
@ -32,7 +32,7 @@ namespace rclcpp
|
||||||
namespace executors
|
namespace executors
|
||||||
{
|
{
|
||||||
|
|
||||||
class MultiThreadedExecutor : public executor::Executor
|
class MultiThreadedExecutor : public rclcpp::Executor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
RCLCPP_SMART_PTR_DEFINITIONS(MultiThreadedExecutor)
|
RCLCPP_SMART_PTR_DEFINITIONS(MultiThreadedExecutor)
|
||||||
|
@ -45,14 +45,14 @@ public:
|
||||||
* This is useful for reproducing some bugs related to taking work more than
|
* This is useful for reproducing some bugs related to taking work more than
|
||||||
* once.
|
* once.
|
||||||
*
|
*
|
||||||
* \param args common arguments for all executors
|
* \param options common options for all executors
|
||||||
* \param number_of_threads number of threads to have in the thread pool,
|
* \param number_of_threads number of threads to have in the thread pool,
|
||||||
* the default 0 will use the number of cpu cores found instead
|
* the default 0 will use the number of cpu cores found instead
|
||||||
* \param yield_before_execute if true std::this_thread::yield() is called
|
* \param yield_before_execute if true std::this_thread::yield() is called
|
||||||
*/
|
*/
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
MultiThreadedExecutor(
|
MultiThreadedExecutor(
|
||||||
const executor::ExecutorArgs & args = executor::ExecutorArgs(),
|
const rclcpp::ExecutorOptions & options = rclcpp::ExecutorOptions(),
|
||||||
size_t number_of_threads = 0,
|
size_t number_of_threads = 0,
|
||||||
bool yield_before_execute = false,
|
bool yield_before_execute = false,
|
||||||
std::chrono::nanoseconds timeout = std::chrono::nanoseconds(-1));
|
std::chrono::nanoseconds timeout = std::chrono::nanoseconds(-1));
|
||||||
|
|
|
@ -35,25 +35,31 @@ namespace rclcpp
|
||||||
namespace executors
|
namespace executors
|
||||||
{
|
{
|
||||||
|
|
||||||
/// Single-threaded executor implementation
|
/// Single-threaded executor implementation.
|
||||||
// This is the default executor created by rclcpp::spin.
|
/**
|
||||||
class SingleThreadedExecutor : public executor::Executor
|
* This is the default executor created by rclcpp::spin.
|
||||||
|
*/
|
||||||
|
class SingleThreadedExecutor : public rclcpp::Executor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
RCLCPP_SMART_PTR_DEFINITIONS(SingleThreadedExecutor)
|
RCLCPP_SMART_PTR_DEFINITIONS(SingleThreadedExecutor)
|
||||||
|
|
||||||
/// Default constructor. See the default constructor for Executor.
|
/// Default constructor. See the default constructor for Executor.
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
SingleThreadedExecutor(
|
explicit SingleThreadedExecutor(
|
||||||
const executor::ExecutorArgs & args = executor::ExecutorArgs());
|
const rclcpp::ExecutorOptions & options = rclcpp::ExecutorOptions());
|
||||||
|
|
||||||
/// Default destrcutor.
|
/// Default destructor.
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
virtual ~SingleThreadedExecutor();
|
virtual ~SingleThreadedExecutor();
|
||||||
|
|
||||||
/// Single-threaded implementation of spin.
|
/// Single-threaded implementation of spin.
|
||||||
// This function will block until work comes in, execute it, and keep blocking.
|
/**
|
||||||
// It will only be interrupt by a CTRL-C (managed by the global signal handler).
|
* This function will block until work comes in, execute it, and then repeat
|
||||||
|
* the process until canceled.
|
||||||
|
* It may be interrupt by a call to rclcpp::Executor::cancel() or by ctrl-c
|
||||||
|
* if the associated context is configured to shutdown on SIGINT.
|
||||||
|
*/
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
void
|
void
|
||||||
spin() override;
|
spin() override;
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
#include "rcl/guard_condition.h"
|
#include "rcl/guard_condition.h"
|
||||||
#include "rcl/wait.h"
|
#include "rcl/wait.h"
|
||||||
|
|
||||||
#include "rclcpp/executable_list.hpp"
|
#include "rclcpp/experimental/executable_list.hpp"
|
||||||
#include "rclcpp/macros.hpp"
|
#include "rclcpp/macros.hpp"
|
||||||
#include "rclcpp/memory_strategy.hpp"
|
#include "rclcpp/memory_strategy.hpp"
|
||||||
#include "rclcpp/visibility_control.hpp"
|
#include "rclcpp/visibility_control.hpp"
|
||||||
|
@ -159,7 +159,7 @@ private:
|
||||||
rcl_wait_set_t * p_wait_set_ = nullptr;
|
rcl_wait_set_t * p_wait_set_ = nullptr;
|
||||||
|
|
||||||
/// Executable list: timers, subscribers, clients, services and waitables
|
/// Executable list: timers, subscribers, clients, services and waitables
|
||||||
rclcpp::executor::ExecutableList exec_list_;
|
rclcpp::experimental::ExecutableList exec_list_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace executors
|
} // namespace executors
|
||||||
|
|
|
@ -23,9 +23,9 @@
|
||||||
|
|
||||||
#include "rmw/rmw.h"
|
#include "rmw/rmw.h"
|
||||||
|
|
||||||
#include "rclcpp/executable_list.hpp"
|
|
||||||
#include "rclcpp/executor.hpp"
|
#include "rclcpp/executor.hpp"
|
||||||
#include "rclcpp/executors/static_executor_entities_collector.hpp"
|
#include "rclcpp/executors/static_executor_entities_collector.hpp"
|
||||||
|
#include "rclcpp/experimental/executable_list.hpp"
|
||||||
#include "rclcpp/macros.hpp"
|
#include "rclcpp/macros.hpp"
|
||||||
#include "rclcpp/memory_strategies.hpp"
|
#include "rclcpp/memory_strategies.hpp"
|
||||||
#include "rclcpp/node.hpp"
|
#include "rclcpp/node.hpp"
|
||||||
|
@ -54,7 +54,7 @@ namespace executors
|
||||||
* exec.spin();
|
* exec.spin();
|
||||||
* exec.remove_node(node);
|
* exec.remove_node(node);
|
||||||
*/
|
*/
|
||||||
class StaticSingleThreadedExecutor : public executor::Executor
|
class StaticSingleThreadedExecutor : public rclcpp::Executor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
RCLCPP_SMART_PTR_DEFINITIONS(StaticSingleThreadedExecutor)
|
RCLCPP_SMART_PTR_DEFINITIONS(StaticSingleThreadedExecutor)
|
||||||
|
@ -62,7 +62,7 @@ public:
|
||||||
/// Default constructor. See the default constructor for Executor.
|
/// Default constructor. See the default constructor for Executor.
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
explicit StaticSingleThreadedExecutor(
|
explicit StaticSingleThreadedExecutor(
|
||||||
const executor::ExecutorArgs & args = executor::ExecutorArgs());
|
const rclcpp::ExecutorOptions & options = rclcpp::ExecutorOptions());
|
||||||
|
|
||||||
/// Default destrcutor.
|
/// Default destrcutor.
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
|
@ -131,14 +131,14 @@ public:
|
||||||
* exec.spin_until_future_complete(future);
|
* exec.spin_until_future_complete(future);
|
||||||
*/
|
*/
|
||||||
template<typename ResponseT, typename TimeRepT = int64_t, typename TimeT = std::milli>
|
template<typename ResponseT, typename TimeRepT = int64_t, typename TimeT = std::milli>
|
||||||
rclcpp::executor::FutureReturnCode
|
rclcpp::FutureReturnCode
|
||||||
spin_until_future_complete(
|
spin_until_future_complete(
|
||||||
std::shared_future<ResponseT> & future,
|
std::shared_future<ResponseT> & future,
|
||||||
std::chrono::duration<TimeRepT, TimeT> timeout = std::chrono::duration<TimeRepT, TimeT>(-1))
|
std::chrono::duration<TimeRepT, TimeT> timeout = std::chrono::duration<TimeRepT, TimeT>(-1))
|
||||||
{
|
{
|
||||||
std::future_status status = future.wait_for(std::chrono::seconds(0));
|
std::future_status status = future.wait_for(std::chrono::seconds(0));
|
||||||
if (status == std::future_status::ready) {
|
if (status == std::future_status::ready) {
|
||||||
return rclcpp::executor::FutureReturnCode::SUCCESS;
|
return rclcpp::FutureReturnCode::SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto end_time = std::chrono::steady_clock::now();
|
auto end_time = std::chrono::steady_clock::now();
|
||||||
|
@ -159,7 +159,7 @@ public:
|
||||||
// Check if the future is set, return SUCCESS if it is.
|
// Check if the future is set, return SUCCESS if it is.
|
||||||
status = future.wait_for(std::chrono::seconds(0));
|
status = future.wait_for(std::chrono::seconds(0));
|
||||||
if (status == std::future_status::ready) {
|
if (status == std::future_status::ready) {
|
||||||
return rclcpp::executor::FutureReturnCode::SUCCESS;
|
return rclcpp::FutureReturnCode::SUCCESS;
|
||||||
}
|
}
|
||||||
// If the original timeout is < 0, then this is blocking, never TIMEOUT.
|
// If the original timeout is < 0, then this is blocking, never TIMEOUT.
|
||||||
if (timeout_ns < std::chrono::nanoseconds::zero()) {
|
if (timeout_ns < std::chrono::nanoseconds::zero()) {
|
||||||
|
@ -168,14 +168,14 @@ public:
|
||||||
// Otherwise check if we still have time to wait, return TIMEOUT if not.
|
// Otherwise check if we still have time to wait, return TIMEOUT if not.
|
||||||
auto now = std::chrono::steady_clock::now();
|
auto now = std::chrono::steady_clock::now();
|
||||||
if (now >= end_time) {
|
if (now >= end_time) {
|
||||||
return rclcpp::executor::FutureReturnCode::TIMEOUT;
|
return rclcpp::FutureReturnCode::TIMEOUT;
|
||||||
}
|
}
|
||||||
// Subtract the elapsed time from the original timeout.
|
// Subtract the elapsed time from the original timeout.
|
||||||
timeout_left = std::chrono::duration_cast<std::chrono::nanoseconds>(end_time - now);
|
timeout_left = std::chrono::duration_cast<std::chrono::nanoseconds>(end_time - now);
|
||||||
}
|
}
|
||||||
|
|
||||||
// The future did not complete before ok() returned false, return INTERRUPTED.
|
// The future did not complete before ok() returned false, return INTERRUPTED.
|
||||||
return rclcpp::executor::FutureReturnCode::INTERRUPTED;
|
return rclcpp::FutureReturnCode::INTERRUPTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
|
@ -12,8 +12,8 @@
|
||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
#ifndef RCLCPP__EXECUTABLE_LIST_HPP_
|
#ifndef RCLCPP__EXPERIMENTAL__EXECUTABLE_LIST_HPP_
|
||||||
#define RCLCPP__EXECUTABLE_LIST_HPP_
|
#define RCLCPP__EXPERIMENTAL__EXECUTABLE_LIST_HPP_
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
@ -27,7 +27,7 @@
|
||||||
|
|
||||||
namespace rclcpp
|
namespace rclcpp
|
||||||
{
|
{
|
||||||
namespace executor
|
namespace experimental
|
||||||
{
|
{
|
||||||
|
|
||||||
/// This class contains subscriptionbase, timerbase, etc. which can be used to run callbacks.
|
/// This class contains subscriptionbase, timerbase, etc. which can be used to run callbacks.
|
||||||
|
@ -86,7 +86,7 @@ public:
|
||||||
size_t number_of_waitables;
|
size_t number_of_waitables;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace executor
|
} // namespace experimental
|
||||||
} // namespace rclcpp
|
} // namespace rclcpp
|
||||||
|
|
||||||
#endif // RCLCPP__EXECUTABLE_LIST_HPP_
|
#endif // RCLCPP__EXPERIMENTAL__EXECUTABLE_LIST_HPP_
|
61
rclcpp/include/rclcpp/future_return_code.hpp
Normal file
61
rclcpp/include/rclcpp/future_return_code.hpp
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
// Copyright 2014 Open Source Robotics Foundation, Inc.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
#ifndef RCLCPP__FUTURE_RETURN_CODE_HPP_
|
||||||
|
#define RCLCPP__FUTURE_RETURN_CODE_HPP_
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "rclcpp/visibility_control.hpp"
|
||||||
|
|
||||||
|
namespace rclcpp
|
||||||
|
{
|
||||||
|
|
||||||
|
/// Return codes to be used with spin_until_future_complete.
|
||||||
|
/**
|
||||||
|
* SUCCESS: The future is complete and can be accessed with "get" without blocking.
|
||||||
|
* This does not indicate that the operation succeeded; "get" may still throw an exception.
|
||||||
|
* INTERRUPTED: The future is not complete, spinning was interrupted by Ctrl-C or another error.
|
||||||
|
* TIMEOUT: Spinning timed out.
|
||||||
|
*/
|
||||||
|
enum class FutureReturnCode {SUCCESS, INTERRUPTED, TIMEOUT};
|
||||||
|
|
||||||
|
/// Stream operator for FutureReturnCode.
|
||||||
|
RCLCPP_PUBLIC
|
||||||
|
std::ostream &
|
||||||
|
operator<<(std::ostream & os, const FutureReturnCode & future_return_code);
|
||||||
|
|
||||||
|
/// String conversion function for FutureReturnCode.
|
||||||
|
RCLCPP_PUBLIC
|
||||||
|
std::string
|
||||||
|
to_string(const FutureReturnCode & future_return_code);
|
||||||
|
|
||||||
|
namespace executor
|
||||||
|
{
|
||||||
|
|
||||||
|
using FutureReturnCode [[deprecated("use rclcpp::FutureReturnCode instead")]] = FutureReturnCode;
|
||||||
|
|
||||||
|
[[deprecated("use rclcpp::to_string(const rclcpp::FutureReturnCode &) instead")]]
|
||||||
|
inline
|
||||||
|
std::string
|
||||||
|
to_string(const rclcpp::FutureReturnCode & future_return_code)
|
||||||
|
{
|
||||||
|
return rclcpp::to_string(future_return_code);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace executor
|
||||||
|
} // namespace rclcpp
|
||||||
|
|
||||||
|
#endif // RCLCPP__FUTURE_RETURN_CODE_HPP_
|
|
@ -47,7 +47,7 @@ public:
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
explicit GuardCondition(
|
explicit GuardCondition(
|
||||||
rclcpp::Context::SharedPtr context =
|
rclcpp::Context::SharedPtr context =
|
||||||
rclcpp::contexts::default_context::get_global_default_context());
|
rclcpp::contexts::get_global_default_context());
|
||||||
|
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
virtual
|
virtual
|
||||||
|
|
|
@ -67,27 +67,27 @@ public:
|
||||||
|
|
||||||
virtual void
|
virtual void
|
||||||
get_next_subscription(
|
get_next_subscription(
|
||||||
rclcpp::executor::AnyExecutable & any_exec,
|
rclcpp::AnyExecutable & any_exec,
|
||||||
const WeakNodeList & weak_nodes) = 0;
|
const WeakNodeList & weak_nodes) = 0;
|
||||||
|
|
||||||
virtual void
|
virtual void
|
||||||
get_next_service(
|
get_next_service(
|
||||||
rclcpp::executor::AnyExecutable & any_exec,
|
rclcpp::AnyExecutable & any_exec,
|
||||||
const WeakNodeList & weak_nodes) = 0;
|
const WeakNodeList & weak_nodes) = 0;
|
||||||
|
|
||||||
virtual void
|
virtual void
|
||||||
get_next_client(
|
get_next_client(
|
||||||
rclcpp::executor::AnyExecutable & any_exec,
|
rclcpp::AnyExecutable & any_exec,
|
||||||
const WeakNodeList & weak_nodes) = 0;
|
const WeakNodeList & weak_nodes) = 0;
|
||||||
|
|
||||||
virtual void
|
virtual void
|
||||||
get_next_timer(
|
get_next_timer(
|
||||||
rclcpp::executor::AnyExecutable & any_exec,
|
rclcpp::AnyExecutable & any_exec,
|
||||||
const WeakNodeList & weak_nodes) = 0;
|
const WeakNodeList & weak_nodes) = 0;
|
||||||
|
|
||||||
virtual void
|
virtual void
|
||||||
get_next_waitable(
|
get_next_waitable(
|
||||||
rclcpp::executor::AnyExecutable & any_exec,
|
rclcpp::AnyExecutable & any_exec,
|
||||||
const WeakNodeList & weak_nodes) = 0;
|
const WeakNodeList & weak_nodes) = 0;
|
||||||
|
|
||||||
virtual rcl_allocator_t
|
virtual rcl_allocator_t
|
||||||
|
@ -115,30 +115,30 @@ public:
|
||||||
|
|
||||||
static rclcpp::node_interfaces::NodeBaseInterface::SharedPtr
|
static rclcpp::node_interfaces::NodeBaseInterface::SharedPtr
|
||||||
get_node_by_group(
|
get_node_by_group(
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group,
|
rclcpp::CallbackGroup::SharedPtr group,
|
||||||
const WeakNodeList & weak_nodes);
|
const WeakNodeList & weak_nodes);
|
||||||
|
|
||||||
static rclcpp::callback_group::CallbackGroup::SharedPtr
|
static rclcpp::CallbackGroup::SharedPtr
|
||||||
get_group_by_subscription(
|
get_group_by_subscription(
|
||||||
rclcpp::SubscriptionBase::SharedPtr subscription,
|
rclcpp::SubscriptionBase::SharedPtr subscription,
|
||||||
const WeakNodeList & weak_nodes);
|
const WeakNodeList & weak_nodes);
|
||||||
|
|
||||||
static rclcpp::callback_group::CallbackGroup::SharedPtr
|
static rclcpp::CallbackGroup::SharedPtr
|
||||||
get_group_by_service(
|
get_group_by_service(
|
||||||
rclcpp::ServiceBase::SharedPtr service,
|
rclcpp::ServiceBase::SharedPtr service,
|
||||||
const WeakNodeList & weak_nodes);
|
const WeakNodeList & weak_nodes);
|
||||||
|
|
||||||
static rclcpp::callback_group::CallbackGroup::SharedPtr
|
static rclcpp::CallbackGroup::SharedPtr
|
||||||
get_group_by_client(
|
get_group_by_client(
|
||||||
rclcpp::ClientBase::SharedPtr client,
|
rclcpp::ClientBase::SharedPtr client,
|
||||||
const WeakNodeList & weak_nodes);
|
const WeakNodeList & weak_nodes);
|
||||||
|
|
||||||
static rclcpp::callback_group::CallbackGroup::SharedPtr
|
static rclcpp::CallbackGroup::SharedPtr
|
||||||
get_group_by_timer(
|
get_group_by_timer(
|
||||||
rclcpp::TimerBase::SharedPtr timer,
|
rclcpp::TimerBase::SharedPtr timer,
|
||||||
const WeakNodeList & weak_nodes);
|
const WeakNodeList & weak_nodes);
|
||||||
|
|
||||||
static rclcpp::callback_group::CallbackGroup::SharedPtr
|
static rclcpp::CallbackGroup::SharedPtr
|
||||||
get_group_by_waitable(
|
get_group_by_waitable(
|
||||||
rclcpp::Waitable::SharedPtr waitable,
|
rclcpp::Waitable::SharedPtr waitable,
|
||||||
const WeakNodeList & weak_nodes);
|
const WeakNodeList & weak_nodes);
|
||||||
|
|
|
@ -135,12 +135,12 @@ public:
|
||||||
|
|
||||||
/// Create and return a callback group.
|
/// Create and return a callback group.
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr
|
rclcpp::CallbackGroup::SharedPtr
|
||||||
create_callback_group(rclcpp::callback_group::CallbackGroupType group_type);
|
create_callback_group(rclcpp::CallbackGroupType group_type);
|
||||||
|
|
||||||
/// Return the list of callback groups in the node.
|
/// Return the list of callback groups in the node.
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
const std::vector<rclcpp::callback_group::CallbackGroup::WeakPtr> &
|
const std::vector<rclcpp::CallbackGroup::WeakPtr> &
|
||||||
get_callback_groups() const;
|
get_callback_groups() const;
|
||||||
|
|
||||||
/// Create and return a Publisher.
|
/// Create and return a Publisher.
|
||||||
|
@ -227,7 +227,7 @@ public:
|
||||||
create_wall_timer(
|
create_wall_timer(
|
||||||
std::chrono::duration<DurationRepT, DurationT> period,
|
std::chrono::duration<DurationRepT, DurationT> period,
|
||||||
CallbackT callback,
|
CallbackT callback,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group = nullptr);
|
rclcpp::CallbackGroup::SharedPtr group = nullptr);
|
||||||
|
|
||||||
/* Create and return a Client. */
|
/* Create and return a Client. */
|
||||||
template<typename ServiceT>
|
template<typename ServiceT>
|
||||||
|
@ -235,7 +235,7 @@ public:
|
||||||
create_client(
|
create_client(
|
||||||
const std::string & service_name,
|
const std::string & service_name,
|
||||||
const rmw_qos_profile_t & qos_profile = rmw_qos_profile_services_default,
|
const rmw_qos_profile_t & qos_profile = rmw_qos_profile_services_default,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group = nullptr);
|
rclcpp::CallbackGroup::SharedPtr group = nullptr);
|
||||||
|
|
||||||
/* Create and return a Service. */
|
/* Create and return a Service. */
|
||||||
template<typename ServiceT, typename CallbackT>
|
template<typename ServiceT, typename CallbackT>
|
||||||
|
@ -244,7 +244,7 @@ public:
|
||||||
const std::string & service_name,
|
const std::string & service_name,
|
||||||
CallbackT && callback,
|
CallbackT && callback,
|
||||||
const rmw_qos_profile_t & qos_profile = rmw_qos_profile_services_default,
|
const rmw_qos_profile_t & qos_profile = rmw_qos_profile_services_default,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group = nullptr);
|
rclcpp::CallbackGroup::SharedPtr group = nullptr);
|
||||||
|
|
||||||
/// Declare and initialize a parameter, return the effective value.
|
/// Declare and initialize a parameter, return the effective value.
|
||||||
/**
|
/**
|
||||||
|
@ -1142,7 +1142,7 @@ private:
|
||||||
|
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
bool
|
bool
|
||||||
group_in_node(callback_group::CallbackGroup::SharedPtr group);
|
group_in_node(CallbackGroup::SharedPtr group);
|
||||||
|
|
||||||
rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_base_;
|
rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_base_;
|
||||||
rclcpp::node_interfaces::NodeGraphInterface::SharedPtr node_graph_;
|
rclcpp::node_interfaces::NodeGraphInterface::SharedPtr node_graph_;
|
||||||
|
|
|
@ -109,7 +109,7 @@ typename rclcpp::WallTimer<CallbackT>::SharedPtr
|
||||||
Node::create_wall_timer(
|
Node::create_wall_timer(
|
||||||
std::chrono::duration<DurationRepT, DurationT> period,
|
std::chrono::duration<DurationRepT, DurationT> period,
|
||||||
CallbackT callback,
|
CallbackT callback,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group)
|
rclcpp::CallbackGroup::SharedPtr group)
|
||||||
{
|
{
|
||||||
return rclcpp::create_wall_timer(
|
return rclcpp::create_wall_timer(
|
||||||
period,
|
period,
|
||||||
|
@ -124,7 +124,7 @@ typename Client<ServiceT>::SharedPtr
|
||||||
Node::create_client(
|
Node::create_client(
|
||||||
const std::string & service_name,
|
const std::string & service_name,
|
||||||
const rmw_qos_profile_t & qos_profile,
|
const rmw_qos_profile_t & qos_profile,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group)
|
rclcpp::CallbackGroup::SharedPtr group)
|
||||||
{
|
{
|
||||||
return rclcpp::create_client<ServiceT>(
|
return rclcpp::create_client<ServiceT>(
|
||||||
node_base_,
|
node_base_,
|
||||||
|
@ -141,7 +141,7 @@ Node::create_service(
|
||||||
const std::string & service_name,
|
const std::string & service_name,
|
||||||
CallbackT && callback,
|
CallbackT && callback,
|
||||||
const rmw_qos_profile_t & qos_profile,
|
const rmw_qos_profile_t & qos_profile,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group)
|
rclcpp::CallbackGroup::SharedPtr group)
|
||||||
{
|
{
|
||||||
return rclcpp::create_service<ServiceT, CallbackT>(
|
return rclcpp::create_service<ServiceT, CallbackT>(
|
||||||
node_base_,
|
node_base_,
|
||||||
|
|
|
@ -96,22 +96,22 @@ public:
|
||||||
|
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
|
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr
|
rclcpp::CallbackGroup::SharedPtr
|
||||||
create_callback_group(rclcpp::callback_group::CallbackGroupType group_type) override;
|
create_callback_group(rclcpp::CallbackGroupType group_type) override;
|
||||||
|
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
|
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr
|
rclcpp::CallbackGroup::SharedPtr
|
||||||
get_default_callback_group() override;
|
get_default_callback_group() override;
|
||||||
|
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
|
|
||||||
bool
|
bool
|
||||||
callback_group_in_node(rclcpp::callback_group::CallbackGroup::SharedPtr group) override;
|
callback_group_in_node(rclcpp::CallbackGroup::SharedPtr group) override;
|
||||||
|
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
|
|
||||||
const std::vector<rclcpp::callback_group::CallbackGroup::WeakPtr> &
|
const std::vector<rclcpp::CallbackGroup::WeakPtr> &
|
||||||
get_callback_groups() const override;
|
get_callback_groups() const override;
|
||||||
|
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
|
@ -146,8 +146,8 @@ private:
|
||||||
|
|
||||||
std::shared_ptr<rcl_node_t> node_handle_;
|
std::shared_ptr<rcl_node_t> node_handle_;
|
||||||
|
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr default_callback_group_;
|
rclcpp::CallbackGroup::SharedPtr default_callback_group_;
|
||||||
std::vector<rclcpp::callback_group::CallbackGroup::WeakPtr> callback_groups_;
|
std::vector<rclcpp::CallbackGroup::WeakPtr> callback_groups_;
|
||||||
|
|
||||||
std::atomic_bool associated_with_executor_;
|
std::atomic_bool associated_with_executor_;
|
||||||
|
|
||||||
|
|
|
@ -111,25 +111,25 @@ public:
|
||||||
/// Create and return a callback group.
|
/// Create and return a callback group.
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
virtual
|
virtual
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr
|
rclcpp::CallbackGroup::SharedPtr
|
||||||
create_callback_group(rclcpp::callback_group::CallbackGroupType group_type) = 0;
|
create_callback_group(rclcpp::CallbackGroupType group_type) = 0;
|
||||||
|
|
||||||
/// Return the default callback group.
|
/// Return the default callback group.
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
virtual
|
virtual
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr
|
rclcpp::CallbackGroup::SharedPtr
|
||||||
get_default_callback_group() = 0;
|
get_default_callback_group() = 0;
|
||||||
|
|
||||||
/// Return true if the given callback group is associated with this node.
|
/// Return true if the given callback group is associated with this node.
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
virtual
|
virtual
|
||||||
bool
|
bool
|
||||||
callback_group_in_node(rclcpp::callback_group::CallbackGroup::SharedPtr group) = 0;
|
callback_group_in_node(rclcpp::CallbackGroup::SharedPtr group) = 0;
|
||||||
|
|
||||||
/// Return list of callback groups associated with this node.
|
/// Return list of callback groups associated with this node.
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
virtual
|
virtual
|
||||||
const std::vector<rclcpp::callback_group::CallbackGroup::WeakPtr> &
|
const std::vector<rclcpp::CallbackGroup::WeakPtr> &
|
||||||
get_callback_groups() const = 0;
|
get_callback_groups() const = 0;
|
||||||
|
|
||||||
/// Return the atomic bool which is used to ensure only one executor is used.
|
/// Return the atomic bool which is used to ensure only one executor is used.
|
||||||
|
|
|
@ -46,14 +46,14 @@ public:
|
||||||
void
|
void
|
||||||
add_client(
|
add_client(
|
||||||
rclcpp::ClientBase::SharedPtr client_base_ptr,
|
rclcpp::ClientBase::SharedPtr client_base_ptr,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group) override;
|
rclcpp::CallbackGroup::SharedPtr group) override;
|
||||||
|
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
|
|
||||||
void
|
void
|
||||||
add_service(
|
add_service(
|
||||||
rclcpp::ServiceBase::SharedPtr service_base_ptr,
|
rclcpp::ServiceBase::SharedPtr service_base_ptr,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group) override;
|
rclcpp::CallbackGroup::SharedPtr group) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
RCLCPP_DISABLE_COPY(NodeServices)
|
RCLCPP_DISABLE_COPY(NodeServices)
|
||||||
|
|
|
@ -41,14 +41,14 @@ public:
|
||||||
void
|
void
|
||||||
add_client(
|
add_client(
|
||||||
rclcpp::ClientBase::SharedPtr client_base_ptr,
|
rclcpp::ClientBase::SharedPtr client_base_ptr,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group) = 0;
|
rclcpp::CallbackGroup::SharedPtr group) = 0;
|
||||||
|
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
virtual
|
virtual
|
||||||
void
|
void
|
||||||
add_service(
|
add_service(
|
||||||
rclcpp::ServiceBase::SharedPtr service_base_ptr,
|
rclcpp::ServiceBase::SharedPtr service_base_ptr,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group) = 0;
|
rclcpp::CallbackGroup::SharedPtr group) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace node_interfaces
|
} // namespace node_interfaces
|
||||||
|
|
|
@ -46,7 +46,7 @@ public:
|
||||||
void
|
void
|
||||||
add_timer(
|
add_timer(
|
||||||
rclcpp::TimerBase::SharedPtr timer,
|
rclcpp::TimerBase::SharedPtr timer,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr callback_group) override;
|
rclcpp::CallbackGroup::SharedPtr callback_group) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
RCLCPP_DISABLE_COPY(NodeTimers)
|
RCLCPP_DISABLE_COPY(NodeTimers)
|
||||||
|
|
|
@ -41,7 +41,7 @@ public:
|
||||||
void
|
void
|
||||||
add_timer(
|
add_timer(
|
||||||
rclcpp::TimerBase::SharedPtr timer,
|
rclcpp::TimerBase::SharedPtr timer,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr callback_group) = 0;
|
rclcpp::CallbackGroup::SharedPtr callback_group) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace node_interfaces
|
} // namespace node_interfaces
|
||||||
|
|
|
@ -58,7 +58,7 @@ public:
|
||||||
void
|
void
|
||||||
add_publisher(
|
add_publisher(
|
||||||
rclcpp::PublisherBase::SharedPtr publisher,
|
rclcpp::PublisherBase::SharedPtr publisher,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr callback_group) override;
|
rclcpp::CallbackGroup::SharedPtr callback_group) override;
|
||||||
|
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
rclcpp::SubscriptionBase::SharedPtr
|
rclcpp::SubscriptionBase::SharedPtr
|
||||||
|
@ -71,7 +71,7 @@ public:
|
||||||
void
|
void
|
||||||
add_subscription(
|
add_subscription(
|
||||||
rclcpp::SubscriptionBase::SharedPtr subscription,
|
rclcpp::SubscriptionBase::SharedPtr subscription,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr callback_group) override;
|
rclcpp::CallbackGroup::SharedPtr callback_group) override;
|
||||||
|
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
rclcpp::node_interfaces::NodeBaseInterface *
|
rclcpp::node_interfaces::NodeBaseInterface *
|
||||||
|
|
|
@ -60,7 +60,7 @@ public:
|
||||||
void
|
void
|
||||||
add_publisher(
|
add_publisher(
|
||||||
rclcpp::PublisherBase::SharedPtr publisher,
|
rclcpp::PublisherBase::SharedPtr publisher,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr callback_group) = 0;
|
rclcpp::CallbackGroup::SharedPtr callback_group) = 0;
|
||||||
|
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
virtual
|
virtual
|
||||||
|
@ -75,7 +75,7 @@ public:
|
||||||
void
|
void
|
||||||
add_subscription(
|
add_subscription(
|
||||||
rclcpp::SubscriptionBase::SharedPtr subscription,
|
rclcpp::SubscriptionBase::SharedPtr subscription,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr callback_group) = 0;
|
rclcpp::CallbackGroup::SharedPtr callback_group) = 0;
|
||||||
|
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
virtual
|
virtual
|
||||||
|
|
|
@ -45,14 +45,14 @@ public:
|
||||||
void
|
void
|
||||||
add_waitable(
|
add_waitable(
|
||||||
rclcpp::Waitable::SharedPtr waitable_base_ptr,
|
rclcpp::Waitable::SharedPtr waitable_base_ptr,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group) override;
|
rclcpp::CallbackGroup::SharedPtr group) override;
|
||||||
|
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
|
|
||||||
void
|
void
|
||||||
remove_waitable(
|
remove_waitable(
|
||||||
rclcpp::Waitable::SharedPtr waitable_ptr,
|
rclcpp::Waitable::SharedPtr waitable_ptr,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group) noexcept override;
|
rclcpp::CallbackGroup::SharedPtr group) noexcept override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
RCLCPP_DISABLE_COPY(NodeWaitables)
|
RCLCPP_DISABLE_COPY(NodeWaitables)
|
||||||
|
|
|
@ -40,7 +40,7 @@ public:
|
||||||
void
|
void
|
||||||
add_waitable(
|
add_waitable(
|
||||||
rclcpp::Waitable::SharedPtr waitable_ptr,
|
rclcpp::Waitable::SharedPtr waitable_ptr,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group) = 0;
|
rclcpp::CallbackGroup::SharedPtr group) = 0;
|
||||||
|
|
||||||
/// \note this function should not throw because it may be called in destructors
|
/// \note this function should not throw because it may be called in destructors
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
|
@ -48,7 +48,7 @@ public:
|
||||||
void
|
void
|
||||||
remove_waitable(
|
remove_waitable(
|
||||||
rclcpp::Waitable::SharedPtr waitable_ptr,
|
rclcpp::Waitable::SharedPtr waitable_ptr,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group) noexcept = 0;
|
rclcpp::CallbackGroup::SharedPtr group) noexcept = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace node_interfaces
|
} // namespace node_interfaces
|
||||||
|
|
|
@ -38,7 +38,7 @@ public:
|
||||||
/**
|
/**
|
||||||
* Default values for the node options:
|
* Default values for the node options:
|
||||||
*
|
*
|
||||||
* - context = rclcpp::contexts::default_context::get_global_default_context()
|
* - context = rclcpp::contexts::get_global_default_context()
|
||||||
* - arguments = {}
|
* - arguments = {}
|
||||||
* - parameter_overrides = {}
|
* - parameter_overrides = {}
|
||||||
* - use_global_arguments = true
|
* - use_global_arguments = true
|
||||||
|
@ -338,7 +338,7 @@ private:
|
||||||
// documentation in this class.
|
// documentation in this class.
|
||||||
|
|
||||||
rclcpp::Context::SharedPtr context_ {
|
rclcpp::Context::SharedPtr context_ {
|
||||||
rclcpp::contexts::default_context::get_global_default_context()};
|
rclcpp::contexts::get_global_default_context()};
|
||||||
|
|
||||||
std::vector<std::string> arguments_ {};
|
std::vector<std::string> arguments_ {};
|
||||||
|
|
||||||
|
|
|
@ -54,21 +54,21 @@ public:
|
||||||
const rclcpp::node_interfaces::NodeServicesInterface::SharedPtr node_services_interface,
|
const rclcpp::node_interfaces::NodeServicesInterface::SharedPtr node_services_interface,
|
||||||
const std::string & remote_node_name = "",
|
const std::string & remote_node_name = "",
|
||||||
const rmw_qos_profile_t & qos_profile = rmw_qos_profile_parameters,
|
const rmw_qos_profile_t & qos_profile = rmw_qos_profile_parameters,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group = nullptr);
|
rclcpp::CallbackGroup::SharedPtr group = nullptr);
|
||||||
|
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
AsyncParametersClient(
|
AsyncParametersClient(
|
||||||
const rclcpp::Node::SharedPtr node,
|
const rclcpp::Node::SharedPtr node,
|
||||||
const std::string & remote_node_name = "",
|
const std::string & remote_node_name = "",
|
||||||
const rmw_qos_profile_t & qos_profile = rmw_qos_profile_parameters,
|
const rmw_qos_profile_t & qos_profile = rmw_qos_profile_parameters,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group = nullptr);
|
rclcpp::CallbackGroup::SharedPtr group = nullptr);
|
||||||
|
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
AsyncParametersClient(
|
AsyncParametersClient(
|
||||||
rclcpp::Node * node,
|
rclcpp::Node * node,
|
||||||
const std::string & remote_node_name = "",
|
const std::string & remote_node_name = "",
|
||||||
const rmw_qos_profile_t & qos_profile = rmw_qos_profile_parameters,
|
const rmw_qos_profile_t & qos_profile = rmw_qos_profile_parameters,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group = nullptr);
|
rclcpp::CallbackGroup::SharedPtr group = nullptr);
|
||||||
|
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
std::shared_future<std::vector<rclcpp::Parameter>>
|
std::shared_future<std::vector<rclcpp::Parameter>>
|
||||||
|
@ -205,7 +205,7 @@ public:
|
||||||
|
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
SyncParametersClient(
|
SyncParametersClient(
|
||||||
rclcpp::executor::Executor::SharedPtr executor,
|
rclcpp::Executor::SharedPtr executor,
|
||||||
rclcpp::Node::SharedPtr node,
|
rclcpp::Node::SharedPtr node,
|
||||||
const std::string & remote_node_name = "",
|
const std::string & remote_node_name = "",
|
||||||
const rmw_qos_profile_t & qos_profile = rmw_qos_profile_parameters);
|
const rmw_qos_profile_t & qos_profile = rmw_qos_profile_parameters);
|
||||||
|
@ -218,14 +218,14 @@ public:
|
||||||
|
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
SyncParametersClient(
|
SyncParametersClient(
|
||||||
rclcpp::executor::Executor::SharedPtr executor,
|
rclcpp::Executor::SharedPtr executor,
|
||||||
rclcpp::Node * node,
|
rclcpp::Node * node,
|
||||||
const std::string & remote_node_name = "",
|
const std::string & remote_node_name = "",
|
||||||
const rmw_qos_profile_t & qos_profile = rmw_qos_profile_parameters);
|
const rmw_qos_profile_t & qos_profile = rmw_qos_profile_parameters);
|
||||||
|
|
||||||
RCLCPP_PUBLIC
|
RCLCPP_PUBLIC
|
||||||
SyncParametersClient(
|
SyncParametersClient(
|
||||||
rclcpp::executor::Executor::SharedPtr executor,
|
rclcpp::Executor::SharedPtr executor,
|
||||||
const rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_base_interface,
|
const rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_base_interface,
|
||||||
const rclcpp::node_interfaces::NodeTopicsInterface::SharedPtr node_topics_interface,
|
const rclcpp::node_interfaces::NodeTopicsInterface::SharedPtr node_topics_interface,
|
||||||
const rclcpp::node_interfaces::NodeGraphInterface::SharedPtr node_graph_interface,
|
const rclcpp::node_interfaces::NodeGraphInterface::SharedPtr node_graph_interface,
|
||||||
|
@ -339,7 +339,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
rclcpp::executor::Executor::SharedPtr executor_;
|
rclcpp::Executor::SharedPtr executor_;
|
||||||
const rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_base_interface_;
|
const rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_base_interface_;
|
||||||
AsyncParametersClient::SharedPtr async_parameters_client_;
|
AsyncParametersClient::SharedPtr async_parameters_client_;
|
||||||
};
|
};
|
||||||
|
|
|
@ -30,10 +30,7 @@
|
||||||
namespace rclcpp
|
namespace rclcpp
|
||||||
{
|
{
|
||||||
|
|
||||||
namespace callback_group
|
|
||||||
{
|
|
||||||
class CallbackGroup;
|
class CallbackGroup;
|
||||||
} // namespace callback_group
|
|
||||||
|
|
||||||
/// Non-templated part of PublisherOptionsWithAllocator<Allocator>.
|
/// Non-templated part of PublisherOptionsWithAllocator<Allocator>.
|
||||||
struct PublisherOptionsBase
|
struct PublisherOptionsBase
|
||||||
|
@ -48,7 +45,7 @@ struct PublisherOptionsBase
|
||||||
bool use_default_callbacks = true;
|
bool use_default_callbacks = true;
|
||||||
|
|
||||||
/// Callback group in which the waitable items from the publisher should be placed.
|
/// Callback group in which the waitable items from the publisher should be placed.
|
||||||
std::shared_ptr<rclcpp::callback_group::CallbackGroup> callback_group;
|
std::shared_ptr<rclcpp::CallbackGroup> callback_group;
|
||||||
|
|
||||||
/// Optional RMW implementation specific payload to be used during creation of the publisher.
|
/// Optional RMW implementation specific payload to be used during creation of the publisher.
|
||||||
std::shared_ptr<rclcpp::detail::RMWImplementationSpecificPublisherPayload>
|
std::shared_ptr<rclcpp::detail::RMWImplementationSpecificPublisherPayload>
|
||||||
|
|
|
@ -81,7 +81,7 @@
|
||||||
* - rclcpp/executors/multi_threaded_executor.hpp
|
* - rclcpp/executors/multi_threaded_executor.hpp
|
||||||
* - CallbackGroups (mechanism for enforcing concurrency rules for callbacks):
|
* - CallbackGroups (mechanism for enforcing concurrency rules for callbacks):
|
||||||
* - rclcpp::Node::create_callback_group()
|
* - rclcpp::Node::create_callback_group()
|
||||||
* - rclcpp::callback_group::CallbackGroup
|
* - rclcpp::CallbackGroup
|
||||||
* - rclcpp/callback_group.hpp
|
* - rclcpp/callback_group.hpp
|
||||||
*
|
*
|
||||||
* Additionally, there are some methods for introspecting the ROS graph:
|
* Additionally, there are some methods for introspecting the ROS graph:
|
||||||
|
|
|
@ -263,7 +263,7 @@ public:
|
||||||
|
|
||||||
void
|
void
|
||||||
get_next_subscription(
|
get_next_subscription(
|
||||||
executor::AnyExecutable & any_exec,
|
rclcpp::AnyExecutable & any_exec,
|
||||||
const WeakNodeList & weak_nodes) override
|
const WeakNodeList & weak_nodes) override
|
||||||
{
|
{
|
||||||
auto it = subscription_handles_.begin();
|
auto it = subscription_handles_.begin();
|
||||||
|
@ -298,7 +298,7 @@ public:
|
||||||
|
|
||||||
void
|
void
|
||||||
get_next_service(
|
get_next_service(
|
||||||
executor::AnyExecutable & any_exec,
|
rclcpp::AnyExecutable & any_exec,
|
||||||
const WeakNodeList & weak_nodes) override
|
const WeakNodeList & weak_nodes) override
|
||||||
{
|
{
|
||||||
auto it = service_handles_.begin();
|
auto it = service_handles_.begin();
|
||||||
|
@ -332,7 +332,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
get_next_client(executor::AnyExecutable & any_exec, const WeakNodeList & weak_nodes) override
|
get_next_client(rclcpp::AnyExecutable & any_exec, const WeakNodeList & weak_nodes) override
|
||||||
{
|
{
|
||||||
auto it = client_handles_.begin();
|
auto it = client_handles_.begin();
|
||||||
while (it != client_handles_.end()) {
|
while (it != client_handles_.end()) {
|
||||||
|
@ -366,7 +366,7 @@ public:
|
||||||
|
|
||||||
void
|
void
|
||||||
get_next_timer(
|
get_next_timer(
|
||||||
executor::AnyExecutable & any_exec,
|
rclcpp::AnyExecutable & any_exec,
|
||||||
const WeakNodeList & weak_nodes) override
|
const WeakNodeList & weak_nodes) override
|
||||||
{
|
{
|
||||||
auto it = timer_handles_.begin();
|
auto it = timer_handles_.begin();
|
||||||
|
@ -400,7 +400,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
get_next_waitable(executor::AnyExecutable & any_exec, const WeakNodeList & weak_nodes) override
|
get_next_waitable(rclcpp::AnyExecutable & any_exec, const WeakNodeList & weak_nodes) override
|
||||||
{
|
{
|
||||||
auto it = waitable_handles_.begin();
|
auto it = waitable_handles_.begin();
|
||||||
while (it != waitable_handles_.end()) {
|
while (it != waitable_handles_.end()) {
|
||||||
|
|
|
@ -17,6 +17,8 @@
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
|
#include "rosidl_runtime_cpp/traits.hpp"
|
||||||
|
|
||||||
#include "rclcpp/macros.hpp"
|
#include "rclcpp/macros.hpp"
|
||||||
#include "rclcpp/message_memory_strategy.hpp"
|
#include "rclcpp/message_memory_strategy.hpp"
|
||||||
#include "rclcpp/visibility_control.hpp"
|
#include "rclcpp/visibility_control.hpp"
|
||||||
|
|
|
@ -45,7 +45,7 @@ struct SubscriptionOptionsBase
|
||||||
bool ignore_local_publications = false;
|
bool ignore_local_publications = false;
|
||||||
|
|
||||||
/// The callback group for this subscription. NULL to use the default callback group.
|
/// The callback group for this subscription. NULL to use the default callback group.
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr callback_group = nullptr;
|
rclcpp::CallbackGroup::SharedPtr callback_group = nullptr;
|
||||||
|
|
||||||
/// Setting to explicitly set intraprocess communications.
|
/// Setting to explicitly set intraprocess communications.
|
||||||
IntraProcessSetting use_intra_process_comm = IntraProcessSetting::NodeDefault;
|
IntraProcessSetting use_intra_process_comm = IntraProcessSetting::NodeDefault;
|
||||||
|
|
|
@ -45,7 +45,7 @@ namespace rclcpp
|
||||||
/// Initialize communications via the rmw implementation and set up a global signal handler.
|
/// Initialize communications via the rmw implementation and set up a global signal handler.
|
||||||
/**
|
/**
|
||||||
* Initializes the global context which is accessible via the function
|
* Initializes the global context which is accessible via the function
|
||||||
* rclcpp::contexts::default_context::get_global_default_context().
|
* rclcpp::contexts::get_global_default_context().
|
||||||
* Also, installs the global signal handlers with the function
|
* Also, installs the global signal handlers with the function
|
||||||
* rclcpp::install_signal_handlers().
|
* rclcpp::install_signal_handlers().
|
||||||
*
|
*
|
||||||
|
|
|
@ -74,7 +74,7 @@ public:
|
||||||
const typename StoragePolicy::ServicesIterable & services = {},
|
const typename StoragePolicy::ServicesIterable & services = {},
|
||||||
const typename StoragePolicy::WaitablesIterable & waitables = {},
|
const typename StoragePolicy::WaitablesIterable & waitables = {},
|
||||||
rclcpp::Context::SharedPtr context =
|
rclcpp::Context::SharedPtr context =
|
||||||
rclcpp::contexts::default_context::get_global_default_context())
|
rclcpp::contexts::get_global_default_context())
|
||||||
: SynchronizationPolicy(context),
|
: SynchronizationPolicy(context),
|
||||||
StoragePolicy(
|
StoragePolicy(
|
||||||
subscriptions,
|
subscriptions,
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
|
|
||||||
#include "rclcpp/any_executable.hpp"
|
#include "rclcpp/any_executable.hpp"
|
||||||
|
|
||||||
using rclcpp::executor::AnyExecutable;
|
using rclcpp::AnyExecutable;
|
||||||
|
|
||||||
AnyExecutable::AnyExecutable()
|
AnyExecutable::AnyExecutable()
|
||||||
: subscription(nullptr),
|
: subscription(nullptr),
|
||||||
|
|
|
@ -16,8 +16,8 @@
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
using rclcpp::callback_group::CallbackGroup;
|
using rclcpp::CallbackGroup;
|
||||||
using rclcpp::callback_group::CallbackGroupType;
|
using rclcpp::CallbackGroupType;
|
||||||
|
|
||||||
CallbackGroup::CallbackGroup(CallbackGroupType group_type)
|
CallbackGroup::CallbackGroup(CallbackGroupType group_type)
|
||||||
: type_(group_type), can_be_taken_from_(true)
|
: type_(group_type), can_be_taken_from_(true)
|
||||||
|
|
|
@ -14,13 +14,13 @@
|
||||||
|
|
||||||
#include "rclcpp/contexts/default_context.hpp"
|
#include "rclcpp/contexts/default_context.hpp"
|
||||||
|
|
||||||
using rclcpp::contexts::default_context::DefaultContext;
|
using rclcpp::contexts::DefaultContext;
|
||||||
|
|
||||||
DefaultContext::DefaultContext()
|
DefaultContext::DefaultContext()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
DefaultContext::SharedPtr
|
DefaultContext::SharedPtr
|
||||||
rclcpp::contexts::default_context::get_global_default_context()
|
rclcpp::contexts::get_global_default_context()
|
||||||
{
|
{
|
||||||
static DefaultContext::SharedPtr default_context = DefaultContext::make_shared();
|
static DefaultContext::SharedPtr default_context = DefaultContext::make_shared();
|
||||||
return default_context;
|
return default_context;
|
||||||
|
|
|
@ -14,9 +14,9 @@
|
||||||
|
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
#include "rclcpp/executable_list.hpp"
|
#include "rclcpp/experimental/executable_list.hpp"
|
||||||
|
|
||||||
using rclcpp::executor::ExecutableList;
|
using rclcpp::experimental::ExecutableList;
|
||||||
|
|
||||||
ExecutableList::ExecutableList()
|
ExecutableList::ExecutableList()
|
||||||
: number_of_subscriptions(0),
|
: number_of_subscriptions(0),
|
||||||
|
|
|
@ -29,18 +29,18 @@
|
||||||
#include "rcutils/logging_macros.h"
|
#include "rcutils/logging_macros.h"
|
||||||
|
|
||||||
using rclcpp::exceptions::throw_from_rcl_error;
|
using rclcpp::exceptions::throw_from_rcl_error;
|
||||||
using rclcpp::executor::AnyExecutable;
|
using rclcpp::AnyExecutable;
|
||||||
using rclcpp::executor::Executor;
|
using rclcpp::Executor;
|
||||||
using rclcpp::executor::ExecutorArgs;
|
using rclcpp::ExecutorOptions;
|
||||||
using rclcpp::executor::FutureReturnCode;
|
using rclcpp::FutureReturnCode;
|
||||||
|
|
||||||
Executor::Executor(const ExecutorArgs & args)
|
Executor::Executor(const rclcpp::ExecutorOptions & options)
|
||||||
: spinning(false),
|
: spinning(false),
|
||||||
memory_strategy_(args.memory_strategy)
|
memory_strategy_(options.memory_strategy)
|
||||||
{
|
{
|
||||||
rcl_guard_condition_options_t guard_condition_options = rcl_guard_condition_get_default_options();
|
rcl_guard_condition_options_t guard_condition_options = rcl_guard_condition_get_default_options();
|
||||||
rcl_ret_t ret = rcl_guard_condition_init(
|
rcl_ret_t ret = rcl_guard_condition_init(
|
||||||
&interrupt_guard_condition_, args.context->get_rcl_context().get(), guard_condition_options);
|
&interrupt_guard_condition_, options.context->get_rcl_context().get(), guard_condition_options);
|
||||||
if (RCL_RET_OK != ret) {
|
if (RCL_RET_OK != ret) {
|
||||||
throw_from_rcl_error(ret, "Failed to create interrupt guard condition in Executor constructor");
|
throw_from_rcl_error(ret, "Failed to create interrupt guard condition in Executor constructor");
|
||||||
}
|
}
|
||||||
|
@ -49,14 +49,14 @@ Executor::Executor(const ExecutorArgs & args)
|
||||||
// and one for the executor's guard cond (interrupt_guard_condition_)
|
// and one for the executor's guard cond (interrupt_guard_condition_)
|
||||||
|
|
||||||
// Put the global ctrl-c guard condition in
|
// Put the global ctrl-c guard condition in
|
||||||
memory_strategy_->add_guard_condition(args.context->get_interrupt_guard_condition(&wait_set_));
|
memory_strategy_->add_guard_condition(options.context->get_interrupt_guard_condition(&wait_set_));
|
||||||
|
|
||||||
// Put the executor's guard condition in
|
// Put the executor's guard condition in
|
||||||
memory_strategy_->add_guard_condition(&interrupt_guard_condition_);
|
memory_strategy_->add_guard_condition(&interrupt_guard_condition_);
|
||||||
rcl_allocator_t allocator = memory_strategy_->get_allocator();
|
rcl_allocator_t allocator = memory_strategy_->get_allocator();
|
||||||
|
|
||||||
// Store the context for later use.
|
// Store the context for later use.
|
||||||
context_ = args.context;
|
context_ = options.context;
|
||||||
|
|
||||||
ret = rcl_wait_set_init(
|
ret = rcl_wait_set_init(
|
||||||
&wait_set_,
|
&wait_set_,
|
||||||
|
@ -502,7 +502,7 @@ Executor::wait_for_work(std::chrono::nanoseconds timeout)
|
||||||
}
|
}
|
||||||
|
|
||||||
rclcpp::node_interfaces::NodeBaseInterface::SharedPtr
|
rclcpp::node_interfaces::NodeBaseInterface::SharedPtr
|
||||||
Executor::get_node_by_group(rclcpp::callback_group::CallbackGroup::SharedPtr group)
|
Executor::get_node_by_group(rclcpp::CallbackGroup::SharedPtr group)
|
||||||
{
|
{
|
||||||
if (!group) {
|
if (!group) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -522,7 +522,7 @@ Executor::get_node_by_group(rclcpp::callback_group::CallbackGroup::SharedPtr gro
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr
|
rclcpp::CallbackGroup::SharedPtr
|
||||||
Executor::get_group_by_timer(rclcpp::TimerBase::SharedPtr timer)
|
Executor::get_group_by_timer(rclcpp::TimerBase::SharedPtr timer)
|
||||||
{
|
{
|
||||||
for (auto & weak_node : weak_nodes_) {
|
for (auto & weak_node : weak_nodes_) {
|
||||||
|
@ -544,7 +544,7 @@ Executor::get_group_by_timer(rclcpp::TimerBase::SharedPtr timer)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return rclcpp::callback_group::CallbackGroup::SharedPtr();
|
return rclcpp::CallbackGroup::SharedPtr();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
@ -625,29 +625,3 @@ Executor::get_next_executable(AnyExecutable & any_executable, std::chrono::nanos
|
||||||
}
|
}
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::ostream &
|
|
||||||
rclcpp::executor::operator<<(std::ostream & os, const FutureReturnCode & future_return_code)
|
|
||||||
{
|
|
||||||
return os << to_string(future_return_code);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string
|
|
||||||
rclcpp::executor::to_string(const FutureReturnCode & future_return_code)
|
|
||||||
{
|
|
||||||
using enum_type = std::underlying_type<FutureReturnCode>::type;
|
|
||||||
std::string prefix = "Unknown enum value (";
|
|
||||||
std::string ret_as_string = std::to_string(static_cast<enum_type>(future_return_code));
|
|
||||||
switch (future_return_code) {
|
|
||||||
case FutureReturnCode::SUCCESS:
|
|
||||||
prefix = "SUCCESS (";
|
|
||||||
break;
|
|
||||||
case FutureReturnCode::INTERRUPTED:
|
|
||||||
prefix = "INTERRUPTED (";
|
|
||||||
break;
|
|
||||||
case FutureReturnCode::TIMEOUT:
|
|
||||||
prefix = "TIMEOUT (";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return prefix + ret_as_string + ")";
|
|
||||||
}
|
|
||||||
|
|
|
@ -25,11 +25,11 @@
|
||||||
using rclcpp::executors::MultiThreadedExecutor;
|
using rclcpp::executors::MultiThreadedExecutor;
|
||||||
|
|
||||||
MultiThreadedExecutor::MultiThreadedExecutor(
|
MultiThreadedExecutor::MultiThreadedExecutor(
|
||||||
const rclcpp::executor::ExecutorArgs & args,
|
const rclcpp::ExecutorOptions & options,
|
||||||
size_t number_of_threads,
|
size_t number_of_threads,
|
||||||
bool yield_before_execute,
|
bool yield_before_execute,
|
||||||
std::chrono::nanoseconds next_exec_timeout)
|
std::chrono::nanoseconds next_exec_timeout)
|
||||||
: executor::Executor(args),
|
: rclcpp::Executor(options),
|
||||||
yield_before_execute_(yield_before_execute),
|
yield_before_execute_(yield_before_execute),
|
||||||
next_exec_timeout_(next_exec_timeout)
|
next_exec_timeout_(next_exec_timeout)
|
||||||
{
|
{
|
||||||
|
@ -74,7 +74,7 @@ void
|
||||||
MultiThreadedExecutor::run(size_t)
|
MultiThreadedExecutor::run(size_t)
|
||||||
{
|
{
|
||||||
while (rclcpp::ok(this->context_) && spinning.load()) {
|
while (rclcpp::ok(this->context_) && spinning.load()) {
|
||||||
executor::AnyExecutable any_exec;
|
rclcpp::AnyExecutable any_exec;
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> wait_lock(wait_mutex_);
|
std::lock_guard<std::mutex> wait_lock(wait_mutex_);
|
||||||
if (!rclcpp::ok(this->context_) || !spinning.load()) {
|
if (!rclcpp::ok(this->context_) || !spinning.load()) {
|
||||||
|
|
|
@ -18,8 +18,8 @@
|
||||||
|
|
||||||
using rclcpp::executors::SingleThreadedExecutor;
|
using rclcpp::executors::SingleThreadedExecutor;
|
||||||
|
|
||||||
SingleThreadedExecutor::SingleThreadedExecutor(const rclcpp::executor::ExecutorArgs & args)
|
SingleThreadedExecutor::SingleThreadedExecutor(const rclcpp::ExecutorOptions & options)
|
||||||
: executor::Executor(args) {}
|
: rclcpp::Executor(options) {}
|
||||||
|
|
||||||
SingleThreadedExecutor::~SingleThreadedExecutor() {}
|
SingleThreadedExecutor::~SingleThreadedExecutor() {}
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ SingleThreadedExecutor::spin()
|
||||||
}
|
}
|
||||||
RCLCPP_SCOPE_EXIT(this->spinning.store(false); );
|
RCLCPP_SCOPE_EXIT(this->spinning.store(false); );
|
||||||
while (rclcpp::ok(this->context_) && spinning.load()) {
|
while (rclcpp::ok(this->context_) && spinning.load()) {
|
||||||
rclcpp::executor::AnyExecutable any_executable;
|
rclcpp::AnyExecutable any_executable;
|
||||||
if (get_next_executable(any_executable)) {
|
if (get_next_executable(any_executable)) {
|
||||||
execute_any_executable(any_executable);
|
execute_any_executable(any_executable);
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,7 @@ StaticExecutorEntitiesCollector::init(
|
||||||
rcl_guard_condition_t * executor_guard_condition)
|
rcl_guard_condition_t * executor_guard_condition)
|
||||||
{
|
{
|
||||||
// Empty initialize executable list
|
// Empty initialize executable list
|
||||||
exec_list_ = executor::ExecutableList();
|
exec_list_ = rclcpp::experimental::ExecutableList();
|
||||||
// Get executor's wait_set_ pointer
|
// Get executor's wait_set_ pointer
|
||||||
p_wait_set_ = p_wait_set;
|
p_wait_set_ = p_wait_set;
|
||||||
// Get executor's memory strategy ptr
|
// Get executor's memory strategy ptr
|
||||||
|
|
|
@ -19,11 +19,11 @@
|
||||||
#include "rclcpp/scope_exit.hpp"
|
#include "rclcpp/scope_exit.hpp"
|
||||||
|
|
||||||
using rclcpp::executors::StaticSingleThreadedExecutor;
|
using rclcpp::executors::StaticSingleThreadedExecutor;
|
||||||
using rclcpp::executor::ExecutableList;
|
using rclcpp::experimental::ExecutableList;
|
||||||
|
|
||||||
StaticSingleThreadedExecutor::StaticSingleThreadedExecutor(
|
StaticSingleThreadedExecutor::StaticSingleThreadedExecutor(
|
||||||
const rclcpp::executor::ExecutorArgs & args)
|
const rclcpp::ExecutorOptions & options)
|
||||||
: executor::Executor(args)
|
: rclcpp::Executor(options)
|
||||||
{
|
{
|
||||||
entities_collector_ = std::make_shared<StaticExecutorEntitiesCollector>();
|
entities_collector_ = std::make_shared<StaticExecutorEntitiesCollector>();
|
||||||
}
|
}
|
||||||
|
|
50
rclcpp/src/rclcpp/future_return_code.cpp
Normal file
50
rclcpp/src/rclcpp/future_return_code.cpp
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
// Copyright 2015 Open Source Robotics Foundation, Inc.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <type_traits>
|
||||||
|
|
||||||
|
#include "rclcpp/future_return_code.hpp"
|
||||||
|
|
||||||
|
namespace rclcpp
|
||||||
|
{
|
||||||
|
|
||||||
|
std::ostream &
|
||||||
|
operator<<(std::ostream & os, const rclcpp::FutureReturnCode & future_return_code)
|
||||||
|
{
|
||||||
|
return os << to_string(future_return_code);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string
|
||||||
|
to_string(const rclcpp::FutureReturnCode & future_return_code)
|
||||||
|
{
|
||||||
|
using enum_type = std::underlying_type<FutureReturnCode>::type;
|
||||||
|
std::string prefix = "Unknown enum value (";
|
||||||
|
std::string ret_as_string = std::to_string(static_cast<enum_type>(future_return_code));
|
||||||
|
switch (future_return_code) {
|
||||||
|
case FutureReturnCode::SUCCESS:
|
||||||
|
prefix = "SUCCESS (";
|
||||||
|
break;
|
||||||
|
case FutureReturnCode::INTERRUPTED:
|
||||||
|
prefix = "INTERRUPTED (";
|
||||||
|
break;
|
||||||
|
case FutureReturnCode::TIMEOUT:
|
||||||
|
prefix = "TIMEOUT (";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return prefix + ret_as_string + ")";
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace rclcpp
|
|
@ -127,7 +127,7 @@ MemoryStrategy::get_timer_by_handle(
|
||||||
|
|
||||||
rclcpp::node_interfaces::NodeBaseInterface::SharedPtr
|
rclcpp::node_interfaces::NodeBaseInterface::SharedPtr
|
||||||
MemoryStrategy::get_node_by_group(
|
MemoryStrategy::get_node_by_group(
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group,
|
rclcpp::CallbackGroup::SharedPtr group,
|
||||||
const WeakNodeList & weak_nodes)
|
const WeakNodeList & weak_nodes)
|
||||||
{
|
{
|
||||||
if (!group) {
|
if (!group) {
|
||||||
|
@ -148,7 +148,7 @@ MemoryStrategy::get_node_by_group(
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr
|
rclcpp::CallbackGroup::SharedPtr
|
||||||
MemoryStrategy::get_group_by_subscription(
|
MemoryStrategy::get_group_by_subscription(
|
||||||
rclcpp::SubscriptionBase::SharedPtr subscription,
|
rclcpp::SubscriptionBase::SharedPtr subscription,
|
||||||
const WeakNodeList & weak_nodes)
|
const WeakNodeList & weak_nodes)
|
||||||
|
@ -175,7 +175,7 @@ MemoryStrategy::get_group_by_subscription(
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr
|
rclcpp::CallbackGroup::SharedPtr
|
||||||
MemoryStrategy::get_group_by_service(
|
MemoryStrategy::get_group_by_service(
|
||||||
rclcpp::ServiceBase::SharedPtr service,
|
rclcpp::ServiceBase::SharedPtr service,
|
||||||
const WeakNodeList & weak_nodes)
|
const WeakNodeList & weak_nodes)
|
||||||
|
@ -202,7 +202,7 @@ MemoryStrategy::get_group_by_service(
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr
|
rclcpp::CallbackGroup::SharedPtr
|
||||||
MemoryStrategy::get_group_by_client(
|
MemoryStrategy::get_group_by_client(
|
||||||
rclcpp::ClientBase::SharedPtr client,
|
rclcpp::ClientBase::SharedPtr client,
|
||||||
const WeakNodeList & weak_nodes)
|
const WeakNodeList & weak_nodes)
|
||||||
|
@ -229,7 +229,7 @@ MemoryStrategy::get_group_by_client(
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr
|
rclcpp::CallbackGroup::SharedPtr
|
||||||
MemoryStrategy::get_group_by_timer(
|
MemoryStrategy::get_group_by_timer(
|
||||||
rclcpp::TimerBase::SharedPtr timer,
|
rclcpp::TimerBase::SharedPtr timer,
|
||||||
const WeakNodeList & weak_nodes)
|
const WeakNodeList & weak_nodes)
|
||||||
|
@ -256,7 +256,7 @@ MemoryStrategy::get_group_by_timer(
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr
|
rclcpp::CallbackGroup::SharedPtr
|
||||||
MemoryStrategy::get_group_by_waitable(
|
MemoryStrategy::get_group_by_waitable(
|
||||||
rclcpp::Waitable::SharedPtr waitable,
|
rclcpp::Waitable::SharedPtr waitable,
|
||||||
const WeakNodeList & weak_nodes)
|
const WeakNodeList & weak_nodes)
|
||||||
|
|
|
@ -210,15 +210,14 @@ Node::get_logger() const
|
||||||
return node_logging_->get_logger();
|
return node_logging_->get_logger();
|
||||||
}
|
}
|
||||||
|
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr
|
rclcpp::CallbackGroup::SharedPtr
|
||||||
Node::create_callback_group(
|
Node::create_callback_group(rclcpp::CallbackGroupType group_type)
|
||||||
rclcpp::callback_group::CallbackGroupType group_type)
|
|
||||||
{
|
{
|
||||||
return node_base_->create_callback_group(group_type);
|
return node_base_->create_callback_group(group_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Node::group_in_node(rclcpp::callback_group::CallbackGroup::SharedPtr group)
|
Node::group_in_node(rclcpp::CallbackGroup::SharedPtr group)
|
||||||
{
|
{
|
||||||
return node_base_->callback_group_in_node(group);
|
return node_base_->callback_group_in_node(group);
|
||||||
}
|
}
|
||||||
|
@ -377,7 +376,7 @@ Node::get_subscriptions_info_by_topic(const std::string & topic_name, bool no_ma
|
||||||
return node_graph_->get_subscriptions_info_by_topic(topic_name, no_mangle);
|
return node_graph_->get_subscriptions_info_by_topic(topic_name, no_mangle);
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::vector<rclcpp::callback_group::CallbackGroup::WeakPtr> &
|
const std::vector<rclcpp::CallbackGroup::WeakPtr> &
|
||||||
Node::get_callback_groups() const
|
Node::get_callback_groups() const
|
||||||
{
|
{
|
||||||
return node_base_->get_callback_groups();
|
return node_base_->get_callback_groups();
|
||||||
|
|
|
@ -133,7 +133,7 @@ NodeBase::NodeBase(
|
||||||
});
|
});
|
||||||
|
|
||||||
// Create the default callback group.
|
// Create the default callback group.
|
||||||
using rclcpp::callback_group::CallbackGroupType;
|
using rclcpp::CallbackGroupType;
|
||||||
default_callback_group_ = create_callback_group(CallbackGroupType::MutuallyExclusive);
|
default_callback_group_ = create_callback_group(CallbackGroupType::MutuallyExclusive);
|
||||||
|
|
||||||
// Indicate the notify_guard_condition is now valid.
|
// Indicate the notify_guard_condition is now valid.
|
||||||
|
@ -208,24 +208,24 @@ NodeBase::assert_liveliness() const
|
||||||
return RCL_RET_OK == rcl_node_assert_liveliness(get_rcl_node_handle());
|
return RCL_RET_OK == rcl_node_assert_liveliness(get_rcl_node_handle());
|
||||||
}
|
}
|
||||||
|
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr
|
rclcpp::CallbackGroup::SharedPtr
|
||||||
NodeBase::create_callback_group(rclcpp::callback_group::CallbackGroupType group_type)
|
NodeBase::create_callback_group(rclcpp::CallbackGroupType group_type)
|
||||||
{
|
{
|
||||||
using rclcpp::callback_group::CallbackGroup;
|
using rclcpp::CallbackGroup;
|
||||||
using rclcpp::callback_group::CallbackGroupType;
|
using rclcpp::CallbackGroupType;
|
||||||
auto group = CallbackGroup::SharedPtr(new CallbackGroup(group_type));
|
auto group = CallbackGroup::SharedPtr(new CallbackGroup(group_type));
|
||||||
callback_groups_.push_back(group);
|
callback_groups_.push_back(group);
|
||||||
return group;
|
return group;
|
||||||
}
|
}
|
||||||
|
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr
|
rclcpp::CallbackGroup::SharedPtr
|
||||||
NodeBase::get_default_callback_group()
|
NodeBase::get_default_callback_group()
|
||||||
{
|
{
|
||||||
return default_callback_group_;
|
return default_callback_group_;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
NodeBase::callback_group_in_node(rclcpp::callback_group::CallbackGroup::SharedPtr group)
|
NodeBase::callback_group_in_node(rclcpp::CallbackGroup::SharedPtr group)
|
||||||
{
|
{
|
||||||
bool group_belongs_to_this_node = false;
|
bool group_belongs_to_this_node = false;
|
||||||
for (auto & weak_group : this->callback_groups_) {
|
for (auto & weak_group : this->callback_groups_) {
|
||||||
|
@ -237,7 +237,7 @@ NodeBase::callback_group_in_node(rclcpp::callback_group::CallbackGroup::SharedPt
|
||||||
return group_belongs_to_this_node;
|
return group_belongs_to_this_node;
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::vector<rclcpp::callback_group::CallbackGroup::WeakPtr> &
|
const std::vector<rclcpp::CallbackGroup::WeakPtr> &
|
||||||
NodeBase::get_callback_groups() const
|
NodeBase::get_callback_groups() const
|
||||||
{
|
{
|
||||||
return callback_groups_;
|
return callback_groups_;
|
||||||
|
|
|
@ -28,7 +28,7 @@ NodeServices::~NodeServices()
|
||||||
void
|
void
|
||||||
NodeServices::add_service(
|
NodeServices::add_service(
|
||||||
rclcpp::ServiceBase::SharedPtr service_base_ptr,
|
rclcpp::ServiceBase::SharedPtr service_base_ptr,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group)
|
rclcpp::CallbackGroup::SharedPtr group)
|
||||||
{
|
{
|
||||||
if (group) {
|
if (group) {
|
||||||
if (!node_base_->callback_group_in_node(group)) {
|
if (!node_base_->callback_group_in_node(group)) {
|
||||||
|
@ -55,7 +55,7 @@ NodeServices::add_service(
|
||||||
void
|
void
|
||||||
NodeServices::add_client(
|
NodeServices::add_client(
|
||||||
rclcpp::ClientBase::SharedPtr client_base_ptr,
|
rclcpp::ClientBase::SharedPtr client_base_ptr,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group)
|
rclcpp::CallbackGroup::SharedPtr group)
|
||||||
{
|
{
|
||||||
if (group) {
|
if (group) {
|
||||||
if (!node_base_->callback_group_in_node(group)) {
|
if (!node_base_->callback_group_in_node(group)) {
|
||||||
|
|
|
@ -28,7 +28,7 @@ NodeTimers::~NodeTimers()
|
||||||
void
|
void
|
||||||
NodeTimers::add_timer(
|
NodeTimers::add_timer(
|
||||||
rclcpp::TimerBase::SharedPtr timer,
|
rclcpp::TimerBase::SharedPtr timer,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr callback_group)
|
rclcpp::CallbackGroup::SharedPtr callback_group)
|
||||||
{
|
{
|
||||||
if (callback_group) {
|
if (callback_group) {
|
||||||
if (!node_base_->callback_group_in_node(callback_group)) {
|
if (!node_base_->callback_group_in_node(callback_group)) {
|
||||||
|
|
|
@ -44,7 +44,7 @@ NodeTopics::create_publisher(
|
||||||
void
|
void
|
||||||
NodeTopics::add_publisher(
|
NodeTopics::add_publisher(
|
||||||
rclcpp::PublisherBase::SharedPtr publisher,
|
rclcpp::PublisherBase::SharedPtr publisher,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr callback_group)
|
rclcpp::CallbackGroup::SharedPtr callback_group)
|
||||||
{
|
{
|
||||||
// Assign to a group.
|
// Assign to a group.
|
||||||
if (callback_group) {
|
if (callback_group) {
|
||||||
|
@ -83,7 +83,7 @@ NodeTopics::create_subscription(
|
||||||
void
|
void
|
||||||
NodeTopics::add_subscription(
|
NodeTopics::add_subscription(
|
||||||
rclcpp::SubscriptionBase::SharedPtr subscription,
|
rclcpp::SubscriptionBase::SharedPtr subscription,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr callback_group)
|
rclcpp::CallbackGroup::SharedPtr callback_group)
|
||||||
{
|
{
|
||||||
// Assign to a group.
|
// Assign to a group.
|
||||||
if (callback_group) {
|
if (callback_group) {
|
||||||
|
|
|
@ -28,7 +28,7 @@ NodeWaitables::~NodeWaitables()
|
||||||
void
|
void
|
||||||
NodeWaitables::add_waitable(
|
NodeWaitables::add_waitable(
|
||||||
rclcpp::Waitable::SharedPtr waitable_ptr,
|
rclcpp::Waitable::SharedPtr waitable_ptr,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group)
|
rclcpp::CallbackGroup::SharedPtr group)
|
||||||
{
|
{
|
||||||
if (group) {
|
if (group) {
|
||||||
if (!node_base_->callback_group_in_node(group)) {
|
if (!node_base_->callback_group_in_node(group)) {
|
||||||
|
@ -55,7 +55,7 @@ NodeWaitables::add_waitable(
|
||||||
void
|
void
|
||||||
NodeWaitables::remove_waitable(
|
NodeWaitables::remove_waitable(
|
||||||
rclcpp::Waitable::SharedPtr waitable_ptr,
|
rclcpp::Waitable::SharedPtr waitable_ptr,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group) noexcept
|
rclcpp::CallbackGroup::SharedPtr group) noexcept
|
||||||
{
|
{
|
||||||
if (group) {
|
if (group) {
|
||||||
if (!node_base_->callback_group_in_node(group)) {
|
if (!node_base_->callback_group_in_node(group)) {
|
||||||
|
|
|
@ -31,7 +31,7 @@ AsyncParametersClient::AsyncParametersClient(
|
||||||
const rclcpp::node_interfaces::NodeServicesInterface::SharedPtr node_services_interface,
|
const rclcpp::node_interfaces::NodeServicesInterface::SharedPtr node_services_interface,
|
||||||
const std::string & remote_node_name,
|
const std::string & remote_node_name,
|
||||||
const rmw_qos_profile_t & qos_profile,
|
const rmw_qos_profile_t & qos_profile,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group)
|
rclcpp::CallbackGroup::SharedPtr group)
|
||||||
: node_topics_interface_(node_topics_interface)
|
: node_topics_interface_(node_topics_interface)
|
||||||
{
|
{
|
||||||
if (remote_node_name != "") {
|
if (remote_node_name != "") {
|
||||||
|
@ -103,7 +103,7 @@ AsyncParametersClient::AsyncParametersClient(
|
||||||
const rclcpp::Node::SharedPtr node,
|
const rclcpp::Node::SharedPtr node,
|
||||||
const std::string & remote_node_name,
|
const std::string & remote_node_name,
|
||||||
const rmw_qos_profile_t & qos_profile,
|
const rmw_qos_profile_t & qos_profile,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group)
|
rclcpp::CallbackGroup::SharedPtr group)
|
||||||
: AsyncParametersClient(
|
: AsyncParametersClient(
|
||||||
node->get_node_base_interface(),
|
node->get_node_base_interface(),
|
||||||
node->get_node_topics_interface(),
|
node->get_node_topics_interface(),
|
||||||
|
@ -118,7 +118,7 @@ AsyncParametersClient::AsyncParametersClient(
|
||||||
rclcpp::Node * node,
|
rclcpp::Node * node,
|
||||||
const std::string & remote_node_name,
|
const std::string & remote_node_name,
|
||||||
const rmw_qos_profile_t & qos_profile,
|
const rmw_qos_profile_t & qos_profile,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group)
|
rclcpp::CallbackGroup::SharedPtr group)
|
||||||
: AsyncParametersClient(
|
: AsyncParametersClient(
|
||||||
node->get_node_base_interface(),
|
node->get_node_base_interface(),
|
||||||
node->get_node_topics_interface(),
|
node->get_node_topics_interface(),
|
||||||
|
@ -349,7 +349,7 @@ SyncParametersClient::SyncParametersClient(
|
||||||
{}
|
{}
|
||||||
|
|
||||||
SyncParametersClient::SyncParametersClient(
|
SyncParametersClient::SyncParametersClient(
|
||||||
rclcpp::executor::Executor::SharedPtr executor,
|
rclcpp::Executor::SharedPtr executor,
|
||||||
rclcpp::Node::SharedPtr node,
|
rclcpp::Node::SharedPtr node,
|
||||||
const std::string & remote_node_name,
|
const std::string & remote_node_name,
|
||||||
const rmw_qos_profile_t & qos_profile)
|
const rmw_qos_profile_t & qos_profile)
|
||||||
|
@ -375,7 +375,7 @@ SyncParametersClient::SyncParametersClient(
|
||||||
{}
|
{}
|
||||||
|
|
||||||
SyncParametersClient::SyncParametersClient(
|
SyncParametersClient::SyncParametersClient(
|
||||||
rclcpp::executor::Executor::SharedPtr executor,
|
rclcpp::Executor::SharedPtr executor,
|
||||||
rclcpp::Node * node,
|
rclcpp::Node * node,
|
||||||
const std::string & remote_node_name,
|
const std::string & remote_node_name,
|
||||||
const rmw_qos_profile_t & qos_profile)
|
const rmw_qos_profile_t & qos_profile)
|
||||||
|
@ -390,7 +390,7 @@ SyncParametersClient::SyncParametersClient(
|
||||||
{}
|
{}
|
||||||
|
|
||||||
SyncParametersClient::SyncParametersClient(
|
SyncParametersClient::SyncParametersClient(
|
||||||
rclcpp::executor::Executor::SharedPtr executor,
|
rclcpp::Executor::SharedPtr executor,
|
||||||
const rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_base_interface,
|
const rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_base_interface,
|
||||||
const rclcpp::node_interfaces::NodeTopicsInterface::SharedPtr node_topics_interface,
|
const rclcpp::node_interfaces::NodeTopicsInterface::SharedPtr node_topics_interface,
|
||||||
const rclcpp::node_interfaces::NodeGraphInterface::SharedPtr node_graph_interface,
|
const rclcpp::node_interfaces::NodeGraphInterface::SharedPtr node_graph_interface,
|
||||||
|
@ -417,7 +417,7 @@ SyncParametersClient::get_parameters(const std::vector<std::string> & parameter_
|
||||||
if (
|
if (
|
||||||
spin_node_until_future_complete(
|
spin_node_until_future_complete(
|
||||||
*executor_, node_base_interface_,
|
*executor_, node_base_interface_,
|
||||||
f) == rclcpp::executor::FutureReturnCode::SUCCESS)
|
f) == rclcpp::FutureReturnCode::SUCCESS)
|
||||||
{
|
{
|
||||||
return f.get();
|
return f.get();
|
||||||
}
|
}
|
||||||
|
@ -443,7 +443,7 @@ SyncParametersClient::get_parameter_types(const std::vector<std::string> & param
|
||||||
if (
|
if (
|
||||||
spin_node_until_future_complete(
|
spin_node_until_future_complete(
|
||||||
*executor_, node_base_interface_,
|
*executor_, node_base_interface_,
|
||||||
f) == rclcpp::executor::FutureReturnCode::SUCCESS)
|
f) == rclcpp::FutureReturnCode::SUCCESS)
|
||||||
{
|
{
|
||||||
return f.get();
|
return f.get();
|
||||||
}
|
}
|
||||||
|
@ -460,7 +460,7 @@ SyncParametersClient::set_parameters(
|
||||||
if (
|
if (
|
||||||
spin_node_until_future_complete(
|
spin_node_until_future_complete(
|
||||||
*executor_, node_base_interface_,
|
*executor_, node_base_interface_,
|
||||||
f) == rclcpp::executor::FutureReturnCode::SUCCESS)
|
f) == rclcpp::FutureReturnCode::SUCCESS)
|
||||||
{
|
{
|
||||||
return f.get();
|
return f.get();
|
||||||
}
|
}
|
||||||
|
@ -477,7 +477,7 @@ SyncParametersClient::set_parameters_atomically(
|
||||||
if (
|
if (
|
||||||
spin_node_until_future_complete(
|
spin_node_until_future_complete(
|
||||||
*executor_, node_base_interface_,
|
*executor_, node_base_interface_,
|
||||||
f) == rclcpp::executor::FutureReturnCode::SUCCESS)
|
f) == rclcpp::FutureReturnCode::SUCCESS)
|
||||||
{
|
{
|
||||||
return f.get();
|
return f.get();
|
||||||
}
|
}
|
||||||
|
@ -496,7 +496,7 @@ SyncParametersClient::list_parameters(
|
||||||
if (
|
if (
|
||||||
spin_node_until_future_complete(
|
spin_node_until_future_complete(
|
||||||
*executor_, node_base_interface_,
|
*executor_, node_base_interface_,
|
||||||
f) == rclcpp::executor::FutureReturnCode::SUCCESS)
|
f) == rclcpp::FutureReturnCode::SUCCESS)
|
||||||
{
|
{
|
||||||
return f.get();
|
return f.get();
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@ TimerBase::TimerBase(
|
||||||
: clock_(clock), timer_handle_(nullptr)
|
: clock_(clock), timer_handle_(nullptr)
|
||||||
{
|
{
|
||||||
if (nullptr == context) {
|
if (nullptr == context) {
|
||||||
context = rclcpp::contexts::default_context::get_global_default_context();
|
context = rclcpp::contexts::get_global_default_context();
|
||||||
}
|
}
|
||||||
|
|
||||||
auto rcl_context = context->get_rcl_context();
|
auto rcl_context = context->get_rcl_context();
|
||||||
|
|
|
@ -30,7 +30,7 @@ namespace rclcpp
|
||||||
void
|
void
|
||||||
init(int argc, char const * const argv[], const InitOptions & init_options)
|
init(int argc, char const * const argv[], const InitOptions & init_options)
|
||||||
{
|
{
|
||||||
using contexts::default_context::get_global_default_context;
|
using rclcpp::contexts::get_global_default_context;
|
||||||
get_global_default_context()->init(argc, argv, init_options);
|
get_global_default_context()->init(argc, argv, init_options);
|
||||||
// Install the signal handlers.
|
// Install the signal handlers.
|
||||||
install_signal_handlers();
|
install_signal_handlers();
|
||||||
|
@ -125,7 +125,7 @@ remove_ros_arguments(int argc, char const * const argv[])
|
||||||
bool
|
bool
|
||||||
ok(Context::SharedPtr context)
|
ok(Context::SharedPtr context)
|
||||||
{
|
{
|
||||||
using contexts::default_context::get_global_default_context;
|
using rclcpp::contexts::get_global_default_context;
|
||||||
if (nullptr == context) {
|
if (nullptr == context) {
|
||||||
context = get_global_default_context();
|
context = get_global_default_context();
|
||||||
}
|
}
|
||||||
|
@ -141,7 +141,7 @@ is_initialized(Context::SharedPtr context)
|
||||||
bool
|
bool
|
||||||
shutdown(Context::SharedPtr context, const std::string & reason)
|
shutdown(Context::SharedPtr context, const std::string & reason)
|
||||||
{
|
{
|
||||||
using contexts::default_context::get_global_default_context;
|
using rclcpp::contexts::get_global_default_context;
|
||||||
auto default_context = get_global_default_context();
|
auto default_context = get_global_default_context();
|
||||||
if (nullptr == context) {
|
if (nullptr == context) {
|
||||||
context = default_context;
|
context = default_context;
|
||||||
|
@ -156,7 +156,7 @@ shutdown(Context::SharedPtr context, const std::string & reason)
|
||||||
void
|
void
|
||||||
on_shutdown(std::function<void()> callback, Context::SharedPtr context)
|
on_shutdown(std::function<void()> callback, Context::SharedPtr context)
|
||||||
{
|
{
|
||||||
using contexts::default_context::get_global_default_context;
|
using rclcpp::contexts::get_global_default_context;
|
||||||
if (nullptr == context) {
|
if (nullptr == context) {
|
||||||
context = get_global_default_context();
|
context = get_global_default_context();
|
||||||
}
|
}
|
||||||
|
@ -166,7 +166,7 @@ on_shutdown(std::function<void()> callback, Context::SharedPtr context)
|
||||||
bool
|
bool
|
||||||
sleep_for(const std::chrono::nanoseconds & nanoseconds, Context::SharedPtr context)
|
sleep_for(const std::chrono::nanoseconds & nanoseconds, Context::SharedPtr context)
|
||||||
{
|
{
|
||||||
using contexts::default_context::get_global_default_context;
|
using rclcpp::contexts::get_global_default_context;
|
||||||
if (nullptr == context) {
|
if (nullptr == context) {
|
||||||
context = get_global_default_context();
|
context = get_global_default_context();
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,14 +51,14 @@ TEST_F(TestMultiThreadedExecutor, timer_over_take) {
|
||||||
bool yield_before_execute = true;
|
bool yield_before_execute = true;
|
||||||
|
|
||||||
rclcpp::executors::MultiThreadedExecutor executor(
|
rclcpp::executors::MultiThreadedExecutor executor(
|
||||||
rclcpp::executor::create_default_executor_arguments(), 2u, yield_before_execute);
|
rclcpp::ExecutorOptions(), 2u, yield_before_execute);
|
||||||
|
|
||||||
ASSERT_GT(executor.get_number_of_threads(), 1u);
|
ASSERT_GT(executor.get_number_of_threads(), 1u);
|
||||||
|
|
||||||
std::shared_ptr<rclcpp::Node> node =
|
std::shared_ptr<rclcpp::Node> node =
|
||||||
std::make_shared<rclcpp::Node>("test_multi_threaded_executor_timer_over_take");
|
std::make_shared<rclcpp::Node>("test_multi_threaded_executor_timer_over_take");
|
||||||
|
|
||||||
auto cbg = node->create_callback_group(rclcpp::callback_group::CallbackGroupType::Reentrant);
|
auto cbg = node->create_callback_group(rclcpp::CallbackGroupType::Reentrant);
|
||||||
|
|
||||||
rclcpp::Clock system_clock(RCL_STEADY_TIME);
|
rclcpp::Clock system_clock(RCL_STEADY_TIME);
|
||||||
std::mutex last_mutex;
|
std::mutex last_mutex;
|
||||||
|
|
|
@ -31,7 +31,7 @@ public:
|
||||||
return std::make_shared<rclcpp::node_interfaces::NodeBase>(
|
return std::make_shared<rclcpp::node_interfaces::NodeBase>(
|
||||||
"my_node_name",
|
"my_node_name",
|
||||||
"my_node_namespace",
|
"my_node_namespace",
|
||||||
rclcpp::contexts::default_context::get_global_default_context(),
|
rclcpp::contexts::get_global_default_context(),
|
||||||
*options.get_rcl_node_options(),
|
*options.get_rcl_node_options(),
|
||||||
options.use_intra_process_comms(),
|
options.use_intra_process_comms(),
|
||||||
options.enable_topic_statistics());
|
options.enable_topic_statistics());
|
||||||
|
|
|
@ -52,8 +52,8 @@ TEST(TestUtilities, init_with_args) {
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(TestUtilities, multi_init) {
|
TEST(TestUtilities, multi_init) {
|
||||||
auto context1 = std::make_shared<rclcpp::contexts::default_context::DefaultContext>();
|
auto context1 = std::make_shared<rclcpp::contexts::DefaultContext>();
|
||||||
auto context2 = std::make_shared<rclcpp::contexts::default_context::DefaultContext>();
|
auto context2 = std::make_shared<rclcpp::contexts::DefaultContext>();
|
||||||
|
|
||||||
EXPECT_FALSE(rclcpp::ok(context1));
|
EXPECT_FALSE(rclcpp::ok(context1));
|
||||||
EXPECT_FALSE(rclcpp::ok(context2));
|
EXPECT_FALSE(rclcpp::ok(context2));
|
||||||
|
|
|
@ -46,11 +46,11 @@ create_client(
|
||||||
rclcpp::node_interfaces::NodeLoggingInterface::SharedPtr node_logging_interface,
|
rclcpp::node_interfaces::NodeLoggingInterface::SharedPtr node_logging_interface,
|
||||||
rclcpp::node_interfaces::NodeWaitablesInterface::SharedPtr node_waitables_interface,
|
rclcpp::node_interfaces::NodeWaitablesInterface::SharedPtr node_waitables_interface,
|
||||||
const std::string & name,
|
const std::string & name,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group = nullptr)
|
rclcpp::CallbackGroup::SharedPtr group = nullptr)
|
||||||
{
|
{
|
||||||
std::weak_ptr<rclcpp::node_interfaces::NodeWaitablesInterface> weak_node =
|
std::weak_ptr<rclcpp::node_interfaces::NodeWaitablesInterface> weak_node =
|
||||||
node_waitables_interface;
|
node_waitables_interface;
|
||||||
std::weak_ptr<rclcpp::callback_group::CallbackGroup> weak_group = group;
|
std::weak_ptr<rclcpp::CallbackGroup> weak_group = group;
|
||||||
bool group_is_null = (nullptr == group.get());
|
bool group_is_null = (nullptr == group.get());
|
||||||
|
|
||||||
auto deleter = [weak_node, weak_group, group_is_null](Client<ActionT> * ptr)
|
auto deleter = [weak_node, weak_group, group_is_null](Client<ActionT> * ptr)
|
||||||
|
@ -102,9 +102,9 @@ typename Client<ActionT>::SharedPtr
|
||||||
create_client(
|
create_client(
|
||||||
NodeT node,
|
NodeT node,
|
||||||
const std::string & name,
|
const std::string & name,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group = nullptr)
|
rclcpp::CallbackGroup::SharedPtr group = nullptr)
|
||||||
{
|
{
|
||||||
return create_client<ActionT>(
|
return rclcpp_action::create_client<ActionT>(
|
||||||
node->get_node_base_interface(),
|
node->get_node_base_interface(),
|
||||||
node->get_node_graph_interface(),
|
node->get_node_graph_interface(),
|
||||||
node->get_node_logging_interface(),
|
node->get_node_logging_interface(),
|
||||||
|
|
|
@ -65,11 +65,11 @@ create_server(
|
||||||
typename Server<ActionT>::CancelCallback handle_cancel,
|
typename Server<ActionT>::CancelCallback handle_cancel,
|
||||||
typename Server<ActionT>::AcceptedCallback handle_accepted,
|
typename Server<ActionT>::AcceptedCallback handle_accepted,
|
||||||
const rcl_action_server_options_t & options = rcl_action_server_get_default_options(),
|
const rcl_action_server_options_t & options = rcl_action_server_get_default_options(),
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group = nullptr)
|
rclcpp::CallbackGroup::SharedPtr group = nullptr)
|
||||||
{
|
{
|
||||||
std::weak_ptr<rclcpp::node_interfaces::NodeWaitablesInterface> weak_node =
|
std::weak_ptr<rclcpp::node_interfaces::NodeWaitablesInterface> weak_node =
|
||||||
node_waitables_interface;
|
node_waitables_interface;
|
||||||
std::weak_ptr<rclcpp::callback_group::CallbackGroup> weak_group = group;
|
std::weak_ptr<rclcpp::CallbackGroup> weak_group = group;
|
||||||
bool group_is_null = (nullptr == group.get());
|
bool group_is_null = (nullptr == group.get());
|
||||||
|
|
||||||
auto deleter = [weak_node, weak_group, group_is_null](Server<ActionT> * ptr)
|
auto deleter = [weak_node, weak_group, group_is_null](Server<ActionT> * ptr)
|
||||||
|
@ -137,7 +137,7 @@ create_server(
|
||||||
typename Server<ActionT>::CancelCallback handle_cancel,
|
typename Server<ActionT>::CancelCallback handle_cancel,
|
||||||
typename Server<ActionT>::AcceptedCallback handle_accepted,
|
typename Server<ActionT>::AcceptedCallback handle_accepted,
|
||||||
const rcl_action_server_options_t & options = rcl_action_server_get_default_options(),
|
const rcl_action_server_options_t & options = rcl_action_server_get_default_options(),
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group = nullptr)
|
rclcpp::CallbackGroup::SharedPtr group = nullptr)
|
||||||
{
|
{
|
||||||
return create_server<ActionT>(
|
return create_server<ActionT>(
|
||||||
node->get_node_base_interface(),
|
node->get_node_base_interface(),
|
||||||
|
|
|
@ -49,7 +49,7 @@ protected:
|
||||||
request->goal_id.uuid = uuid;
|
request->goal_id.uuid = uuid;
|
||||||
auto future = client->async_send_request(request);
|
auto future = client->async_send_request(request);
|
||||||
if (
|
if (
|
||||||
rclcpp::executor::FutureReturnCode::SUCCESS !=
|
rclcpp::FutureReturnCode::SUCCESS !=
|
||||||
rclcpp::spin_until_future_complete(node, future))
|
rclcpp::spin_until_future_complete(node, future))
|
||||||
{
|
{
|
||||||
throw std::runtime_error("send goal future didn't complete succesfully");
|
throw std::runtime_error("send goal future didn't complete succesfully");
|
||||||
|
@ -69,7 +69,7 @@ protected:
|
||||||
request->goal_info.goal_id.uuid = uuid;
|
request->goal_info.goal_id.uuid = uuid;
|
||||||
auto future = cancel_client->async_send_request(request);
|
auto future = cancel_client->async_send_request(request);
|
||||||
if (
|
if (
|
||||||
rclcpp::executor::FutureReturnCode::SUCCESS !=
|
rclcpp::FutureReturnCode::SUCCESS !=
|
||||||
rclcpp::spin_until_future_complete(node, future))
|
rclcpp::spin_until_future_complete(node, future))
|
||||||
{
|
{
|
||||||
throw std::runtime_error("cancel goal future didn't complete succesfully");
|
throw std::runtime_error("cancel goal future didn't complete succesfully");
|
||||||
|
@ -132,7 +132,7 @@ TEST_F(TestServer, handle_goal_called)
|
||||||
|
|
||||||
auto future = client->async_send_request(request);
|
auto future = client->async_send_request(request);
|
||||||
ASSERT_EQ(
|
ASSERT_EQ(
|
||||||
rclcpp::executor::FutureReturnCode::SUCCESS,
|
rclcpp::FutureReturnCode::SUCCESS,
|
||||||
rclcpp::spin_until_future_complete(node, future));
|
rclcpp::spin_until_future_complete(node, future));
|
||||||
|
|
||||||
ASSERT_EQ(uuid, received_uuid);
|
ASSERT_EQ(uuid, received_uuid);
|
||||||
|
@ -744,7 +744,7 @@ TEST_F(TestServer, get_result)
|
||||||
|
|
||||||
// Wait for the result request to be received
|
// Wait for the result request to be received
|
||||||
ASSERT_EQ(
|
ASSERT_EQ(
|
||||||
rclcpp::executor::FutureReturnCode::SUCCESS,
|
rclcpp::FutureReturnCode::SUCCESS,
|
||||||
rclcpp::spin_until_future_complete(node, future));
|
rclcpp::spin_until_future_complete(node, future));
|
||||||
|
|
||||||
auto response = future.get();
|
auto response = future.get();
|
||||||
|
|
|
@ -62,7 +62,7 @@ public:
|
||||||
|
|
||||||
RCLCPP_COMPONENTS_PUBLIC
|
RCLCPP_COMPONENTS_PUBLIC
|
||||||
ComponentManager(
|
ComponentManager(
|
||||||
std::weak_ptr<rclcpp::executor::Executor> executor,
|
std::weak_ptr<rclcpp::Executor> executor,
|
||||||
std::string node_name = "ComponentManager",
|
std::string node_name = "ComponentManager",
|
||||||
const rclcpp::NodeOptions & node_options = rclcpp::NodeOptions());
|
const rclcpp::NodeOptions & node_options = rclcpp::NodeOptions());
|
||||||
|
|
||||||
|
@ -103,7 +103,7 @@ protected:
|
||||||
std::shared_ptr<ListNodes::Response> response);
|
std::shared_ptr<ListNodes::Response> response);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::weak_ptr<rclcpp::executor::Executor> executor_;
|
std::weak_ptr<rclcpp::Executor> executor_;
|
||||||
|
|
||||||
uint64_t unique_id_ {1};
|
uint64_t unique_id_ {1};
|
||||||
std::map<std::string, std::unique_ptr<class_loader::ClassLoader>> loaders_;
|
std::map<std::string, std::unique_ptr<class_loader::ClassLoader>> loaders_;
|
||||||
|
|
|
@ -31,7 +31,7 @@ namespace rclcpp_components
|
||||||
{
|
{
|
||||||
|
|
||||||
ComponentManager::ComponentManager(
|
ComponentManager::ComponentManager(
|
||||||
std::weak_ptr<rclcpp::executor::Executor> executor,
|
std::weak_ptr<rclcpp::Executor> executor,
|
||||||
std::string node_name,
|
std::string node_name,
|
||||||
const rclcpp::NodeOptions & node_options)
|
const rclcpp::NodeOptions & node_options)
|
||||||
: Node(std::move(node_name), node_options),
|
: Node(std::move(node_name), node_options),
|
||||||
|
|
|
@ -59,7 +59,7 @@ TEST_F(TestComponentManager, components_api)
|
||||||
|
|
||||||
auto result = client->async_send_request(request);
|
auto result = client->async_send_request(request);
|
||||||
auto ret = exec->spin_until_future_complete(result, 5s); // Wait for the result.
|
auto ret = exec->spin_until_future_complete(result, 5s); // Wait for the result.
|
||||||
EXPECT_EQ(ret, rclcpp::executor::FutureReturnCode::SUCCESS);
|
EXPECT_EQ(ret, rclcpp::FutureReturnCode::SUCCESS);
|
||||||
EXPECT_EQ(result.get()->success, true);
|
EXPECT_EQ(result.get()->success, true);
|
||||||
EXPECT_EQ(result.get()->error_message, "");
|
EXPECT_EQ(result.get()->error_message, "");
|
||||||
EXPECT_EQ(result.get()->full_node_name, "/test_component_foo");
|
EXPECT_EQ(result.get()->full_node_name, "/test_component_foo");
|
||||||
|
@ -73,7 +73,7 @@ TEST_F(TestComponentManager, components_api)
|
||||||
|
|
||||||
auto result = client->async_send_request(request);
|
auto result = client->async_send_request(request);
|
||||||
auto ret = exec->spin_until_future_complete(result, 5s); // Wait for the result.
|
auto ret = exec->spin_until_future_complete(result, 5s); // Wait for the result.
|
||||||
EXPECT_EQ(ret, rclcpp::executor::FutureReturnCode::SUCCESS);
|
EXPECT_EQ(ret, rclcpp::FutureReturnCode::SUCCESS);
|
||||||
EXPECT_EQ(result.get()->success, true);
|
EXPECT_EQ(result.get()->success, true);
|
||||||
EXPECT_EQ(result.get()->error_message, "");
|
EXPECT_EQ(result.get()->error_message, "");
|
||||||
EXPECT_EQ(result.get()->full_node_name, "/test_component_bar");
|
EXPECT_EQ(result.get()->full_node_name, "/test_component_bar");
|
||||||
|
@ -89,7 +89,7 @@ TEST_F(TestComponentManager, components_api)
|
||||||
|
|
||||||
auto result = client->async_send_request(request);
|
auto result = client->async_send_request(request);
|
||||||
auto ret = exec->spin_until_future_complete(result, 5s); // Wait for the result.
|
auto ret = exec->spin_until_future_complete(result, 5s); // Wait for the result.
|
||||||
EXPECT_EQ(ret, rclcpp::executor::FutureReturnCode::SUCCESS);
|
EXPECT_EQ(ret, rclcpp::FutureReturnCode::SUCCESS);
|
||||||
EXPECT_EQ(result.get()->success, true);
|
EXPECT_EQ(result.get()->success, true);
|
||||||
EXPECT_EQ(result.get()->error_message, "");
|
EXPECT_EQ(result.get()->error_message, "");
|
||||||
EXPECT_EQ(result.get()->full_node_name, "/test_component_baz");
|
EXPECT_EQ(result.get()->full_node_name, "/test_component_baz");
|
||||||
|
@ -106,7 +106,7 @@ TEST_F(TestComponentManager, components_api)
|
||||||
|
|
||||||
auto result = client->async_send_request(request);
|
auto result = client->async_send_request(request);
|
||||||
auto ret = exec->spin_until_future_complete(result, 5s); // Wait for the result.
|
auto ret = exec->spin_until_future_complete(result, 5s); // Wait for the result.
|
||||||
EXPECT_EQ(ret, rclcpp::executor::FutureReturnCode::SUCCESS);
|
EXPECT_EQ(ret, rclcpp::FutureReturnCode::SUCCESS);
|
||||||
EXPECT_EQ(result.get()->success, true);
|
EXPECT_EQ(result.get()->success, true);
|
||||||
EXPECT_EQ(result.get()->error_message, "");
|
EXPECT_EQ(result.get()->error_message, "");
|
||||||
EXPECT_EQ(result.get()->full_node_name, "/ns/test_component_bing");
|
EXPECT_EQ(result.get()->full_node_name, "/ns/test_component_bing");
|
||||||
|
@ -121,7 +121,7 @@ TEST_F(TestComponentManager, components_api)
|
||||||
|
|
||||||
auto result = client->async_send_request(request);
|
auto result = client->async_send_request(request);
|
||||||
auto ret = exec->spin_until_future_complete(result, 5s); // Wait for the result.
|
auto ret = exec->spin_until_future_complete(result, 5s); // Wait for the result.
|
||||||
EXPECT_EQ(ret, rclcpp::executor::FutureReturnCode::SUCCESS);
|
EXPECT_EQ(ret, rclcpp::FutureReturnCode::SUCCESS);
|
||||||
EXPECT_EQ(result.get()->success, false);
|
EXPECT_EQ(result.get()->success, false);
|
||||||
EXPECT_EQ(result.get()->error_message, "Failed to find class with the requested plugin name.");
|
EXPECT_EQ(result.get()->error_message, "Failed to find class with the requested plugin name.");
|
||||||
EXPECT_EQ(result.get()->full_node_name, "");
|
EXPECT_EQ(result.get()->full_node_name, "");
|
||||||
|
@ -136,7 +136,7 @@ TEST_F(TestComponentManager, components_api)
|
||||||
|
|
||||||
auto result = client->async_send_request(request);
|
auto result = client->async_send_request(request);
|
||||||
auto ret = exec->spin_until_future_complete(result, 5s); // Wait for the result.
|
auto ret = exec->spin_until_future_complete(result, 5s); // Wait for the result.
|
||||||
EXPECT_EQ(ret, rclcpp::executor::FutureReturnCode::SUCCESS);
|
EXPECT_EQ(ret, rclcpp::FutureReturnCode::SUCCESS);
|
||||||
EXPECT_EQ(result.get()->success, false);
|
EXPECT_EQ(result.get()->success, false);
|
||||||
EXPECT_EQ(result.get()->error_message, "Could not find requested resource in ament index");
|
EXPECT_EQ(result.get()->error_message, "Could not find requested resource in ament index");
|
||||||
EXPECT_EQ(result.get()->full_node_name, "");
|
EXPECT_EQ(result.get()->full_node_name, "");
|
||||||
|
@ -166,7 +166,7 @@ TEST_F(TestComponentManager, components_api)
|
||||||
auto request = std::make_shared<composition_interfaces::srv::ListNodes::Request>();
|
auto request = std::make_shared<composition_interfaces::srv::ListNodes::Request>();
|
||||||
auto result = client->async_send_request(request);
|
auto result = client->async_send_request(request);
|
||||||
auto ret = exec->spin_until_future_complete(result, 5s); // Wait for the result.
|
auto ret = exec->spin_until_future_complete(result, 5s); // Wait for the result.
|
||||||
EXPECT_EQ(ret, rclcpp::executor::FutureReturnCode::SUCCESS);
|
EXPECT_EQ(ret, rclcpp::FutureReturnCode::SUCCESS);
|
||||||
auto node_names = result.get()->full_node_names;
|
auto node_names = result.get()->full_node_names;
|
||||||
auto unique_ids = result.get()->unique_ids;
|
auto unique_ids = result.get()->unique_ids;
|
||||||
|
|
||||||
|
@ -197,7 +197,7 @@ TEST_F(TestComponentManager, components_api)
|
||||||
|
|
||||||
auto result = client->async_send_request(request);
|
auto result = client->async_send_request(request);
|
||||||
auto ret = exec->spin_until_future_complete(result, 5s); // Wait for the result.
|
auto ret = exec->spin_until_future_complete(result, 5s); // Wait for the result.
|
||||||
EXPECT_EQ(ret, rclcpp::executor::FutureReturnCode::SUCCESS);
|
EXPECT_EQ(ret, rclcpp::FutureReturnCode::SUCCESS);
|
||||||
EXPECT_EQ(result.get()->success, true);
|
EXPECT_EQ(result.get()->success, true);
|
||||||
EXPECT_EQ(result.get()->error_message, "");
|
EXPECT_EQ(result.get()->error_message, "");
|
||||||
}
|
}
|
||||||
|
@ -208,7 +208,7 @@ TEST_F(TestComponentManager, components_api)
|
||||||
|
|
||||||
auto result = client->async_send_request(request);
|
auto result = client->async_send_request(request);
|
||||||
auto ret = exec->spin_until_future_complete(result, 5s); // Wait for the result.
|
auto ret = exec->spin_until_future_complete(result, 5s); // Wait for the result.
|
||||||
EXPECT_EQ(ret, rclcpp::executor::FutureReturnCode::SUCCESS);
|
EXPECT_EQ(ret, rclcpp::FutureReturnCode::SUCCESS);
|
||||||
EXPECT_EQ(result.get()->success, false);
|
EXPECT_EQ(result.get()->success, false);
|
||||||
EXPECT_EQ(result.get()->error_message, "No node found with unique_id: 1");
|
EXPECT_EQ(result.get()->error_message, "No node found with unique_id: 1");
|
||||||
}
|
}
|
||||||
|
@ -226,7 +226,7 @@ TEST_F(TestComponentManager, components_api)
|
||||||
auto request = std::make_shared<composition_interfaces::srv::ListNodes::Request>();
|
auto request = std::make_shared<composition_interfaces::srv::ListNodes::Request>();
|
||||||
auto result = client->async_send_request(request);
|
auto result = client->async_send_request(request);
|
||||||
auto ret = exec->spin_until_future_complete(result, 5s); // Wait for the result.
|
auto ret = exec->spin_until_future_complete(result, 5s); // Wait for the result.
|
||||||
EXPECT_EQ(ret, rclcpp::executor::FutureReturnCode::SUCCESS);
|
EXPECT_EQ(ret, rclcpp::FutureReturnCode::SUCCESS);
|
||||||
auto node_names = result.get()->full_node_names;
|
auto node_names = result.get()->full_node_names;
|
||||||
auto unique_ids = result.get()->unique_ids;
|
auto unique_ids = result.get()->unique_ids;
|
||||||
|
|
||||||
|
|
|
@ -146,12 +146,12 @@ public:
|
||||||
|
|
||||||
/// Create and return a callback group.
|
/// Create and return a callback group.
|
||||||
RCLCPP_LIFECYCLE_PUBLIC
|
RCLCPP_LIFECYCLE_PUBLIC
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr
|
rclcpp::CallbackGroup::SharedPtr
|
||||||
create_callback_group(rclcpp::callback_group::CallbackGroupType group_type);
|
create_callback_group(rclcpp::CallbackGroupType group_type);
|
||||||
|
|
||||||
/// Return the list of callback groups in the node.
|
/// Return the list of callback groups in the node.
|
||||||
RCLCPP_LIFECYCLE_PUBLIC
|
RCLCPP_LIFECYCLE_PUBLIC
|
||||||
const std::vector<rclcpp::callback_group::CallbackGroup::WeakPtr> &
|
const std::vector<rclcpp::CallbackGroup::WeakPtr> &
|
||||||
get_callback_groups() const;
|
get_callback_groups() const;
|
||||||
|
|
||||||
/// Create and return a Publisher.
|
/// Create and return a Publisher.
|
||||||
|
@ -214,7 +214,7 @@ public:
|
||||||
create_wall_timer(
|
create_wall_timer(
|
||||||
std::chrono::duration<DurationRepT, DurationT> period,
|
std::chrono::duration<DurationRepT, DurationT> period,
|
||||||
CallbackT callback,
|
CallbackT callback,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group = nullptr);
|
rclcpp::CallbackGroup::SharedPtr group = nullptr);
|
||||||
|
|
||||||
/* Create and return a Client. */
|
/* Create and return a Client. */
|
||||||
template<typename ServiceT>
|
template<typename ServiceT>
|
||||||
|
@ -222,7 +222,7 @@ public:
|
||||||
create_client(
|
create_client(
|
||||||
const std::string & service_name,
|
const std::string & service_name,
|
||||||
const rmw_qos_profile_t & qos_profile = rmw_qos_profile_services_default,
|
const rmw_qos_profile_t & qos_profile = rmw_qos_profile_services_default,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group = nullptr);
|
rclcpp::CallbackGroup::SharedPtr group = nullptr);
|
||||||
|
|
||||||
/* Create and return a Service. */
|
/* Create and return a Service. */
|
||||||
template<typename ServiceT, typename CallbackT>
|
template<typename ServiceT, typename CallbackT>
|
||||||
|
@ -231,7 +231,7 @@ public:
|
||||||
const std::string & service_name,
|
const std::string & service_name,
|
||||||
CallbackT && callback,
|
CallbackT && callback,
|
||||||
const rmw_qos_profile_t & qos_profile = rmw_qos_profile_services_default,
|
const rmw_qos_profile_t & qos_profile = rmw_qos_profile_services_default,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group = nullptr);
|
rclcpp::CallbackGroup::SharedPtr group = nullptr);
|
||||||
|
|
||||||
/// Declare and initialize a parameter, return the effective value.
|
/// Declare and initialize a parameter, return the effective value.
|
||||||
/**
|
/**
|
||||||
|
@ -659,7 +659,7 @@ private:
|
||||||
|
|
||||||
RCLCPP_LIFECYCLE_PUBLIC
|
RCLCPP_LIFECYCLE_PUBLIC
|
||||||
bool
|
bool
|
||||||
group_in_node(rclcpp::callback_group::CallbackGroup::SharedPtr group);
|
group_in_node(rclcpp::CallbackGroup::SharedPtr group);
|
||||||
|
|
||||||
rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_base_;
|
rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_base_;
|
||||||
rclcpp::node_interfaces::NodeGraphInterface::SharedPtr node_graph_;
|
rclcpp::node_interfaces::NodeGraphInterface::SharedPtr node_graph_;
|
||||||
|
|
|
@ -84,7 +84,7 @@ typename rclcpp::WallTimer<CallbackT>::SharedPtr
|
||||||
LifecycleNode::create_wall_timer(
|
LifecycleNode::create_wall_timer(
|
||||||
std::chrono::duration<DurationRepT, DurationT> period,
|
std::chrono::duration<DurationRepT, DurationT> period,
|
||||||
CallbackT callback,
|
CallbackT callback,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group)
|
rclcpp::CallbackGroup::SharedPtr group)
|
||||||
{
|
{
|
||||||
auto timer = rclcpp::WallTimer<CallbackT>::make_shared(
|
auto timer = rclcpp::WallTimer<CallbackT>::make_shared(
|
||||||
std::chrono::duration_cast<std::chrono::nanoseconds>(period),
|
std::chrono::duration_cast<std::chrono::nanoseconds>(period),
|
||||||
|
@ -98,7 +98,7 @@ typename rclcpp::Client<ServiceT>::SharedPtr
|
||||||
LifecycleNode::create_client(
|
LifecycleNode::create_client(
|
||||||
const std::string & service_name,
|
const std::string & service_name,
|
||||||
const rmw_qos_profile_t & qos_profile,
|
const rmw_qos_profile_t & qos_profile,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group)
|
rclcpp::CallbackGroup::SharedPtr group)
|
||||||
{
|
{
|
||||||
rcl_client_options_t options = rcl_client_get_default_options();
|
rcl_client_options_t options = rcl_client_get_default_options();
|
||||||
options.qos = qos_profile;
|
options.qos = qos_profile;
|
||||||
|
@ -123,7 +123,7 @@ LifecycleNode::create_service(
|
||||||
const std::string & service_name,
|
const std::string & service_name,
|
||||||
CallbackT && callback,
|
CallbackT && callback,
|
||||||
const rmw_qos_profile_t & qos_profile,
|
const rmw_qos_profile_t & qos_profile,
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr group)
|
rclcpp::CallbackGroup::SharedPtr group)
|
||||||
{
|
{
|
||||||
return rclcpp::create_service<ServiceT, CallbackT>(
|
return rclcpp::create_service<ServiceT, CallbackT>(
|
||||||
node_base_, node_services_,
|
node_base_, node_services_,
|
||||||
|
|
|
@ -146,9 +146,9 @@ LifecycleNode::get_logger() const
|
||||||
return node_logging_->get_logger();
|
return node_logging_->get_logger();
|
||||||
}
|
}
|
||||||
|
|
||||||
rclcpp::callback_group::CallbackGroup::SharedPtr
|
rclcpp::CallbackGroup::SharedPtr
|
||||||
LifecycleNode::create_callback_group(
|
LifecycleNode::create_callback_group(
|
||||||
rclcpp::callback_group::CallbackGroupType group_type)
|
rclcpp::CallbackGroupType group_type)
|
||||||
{
|
{
|
||||||
return node_base_->create_callback_group(group_type);
|
return node_base_->create_callback_group(group_type);
|
||||||
}
|
}
|
||||||
|
@ -181,7 +181,7 @@ LifecycleNode::set_parameter(const rclcpp::Parameter & parameter)
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
LifecycleNode::group_in_node(rclcpp::callback_group::CallbackGroup::SharedPtr group)
|
LifecycleNode::group_in_node(rclcpp::CallbackGroup::SharedPtr group)
|
||||||
{
|
{
|
||||||
return node_base_->callback_group_in_node(group);
|
return node_base_->callback_group_in_node(group);
|
||||||
}
|
}
|
||||||
|
@ -303,7 +303,7 @@ LifecycleNode::get_subscriptions_info_by_topic(const std::string & topic_name, b
|
||||||
return node_graph_->get_subscriptions_info_by_topic(topic_name, no_mangle);
|
return node_graph_->get_subscriptions_info_by_topic(topic_name, no_mangle);
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::vector<rclcpp::callback_group::CallbackGroup::WeakPtr> &
|
const std::vector<rclcpp::CallbackGroup::WeakPtr> &
|
||||||
LifecycleNode::get_callback_groups() const
|
LifecycleNode::get_callback_groups() const
|
||||||
{
|
{
|
||||||
return node_base_->get_callback_groups();
|
return node_base_->get_callback_groups();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue