Skip to content

Commit

Permalink
Pass callbacks as universal references
Browse files Browse the repository at this point in the history
  • Loading branch information
Esteve Fernandez committed Nov 6, 2015
1 parent 361faf6 commit 8c47f61
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 19 deletions.
5 changes: 3 additions & 2 deletions rclcpp/include/rclcpp/client.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ class Client : public ClientBase

SharedFuture async_send_request(
typename ServiceT::Request::SharedPtr request,
CallbackType cb)
CallbackType && cb)
{
int64_t sequence_number;
if (RMW_RET_OK != rmw_send_request(get_client_handle(), request.get(), &sequence_number)) {
Expand All @@ -137,7 +137,8 @@ class Client : public ClientBase

SharedPromise call_promise = std::make_shared<Promise>();
SharedFuture f(call_promise->get_future());
pending_requests_[sequence_number] = std::make_tuple(call_promise, cb, f);
pending_requests_[sequence_number] =
std::make_tuple(call_promise, std::forward<CallbackType>(cb), f);
return f;
}

Expand Down
8 changes: 4 additions & 4 deletions rclcpp/include/rclcpp/node.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ class Node
typename rclcpp::subscription::Subscription<MessageT, Alloc>::SharedPtr
create_subscription(
const std::string & topic_name,
CallbackT callback,
CallbackT && callback,
const rmw_qos_profile_t & qos_profile = rmw_qos_profile_default,
rclcpp::callback_group::CallbackGroup::SharedPtr group = nullptr,
bool ignore_local_publications = false,
Expand All @@ -158,7 +158,7 @@ class Node
create_subscription(
const std::string & topic_name,
size_t qos_history_depth,
CallbackT callback,
CallbackT && callback,
rclcpp::callback_group::CallbackGroup::SharedPtr group = nullptr,
bool ignore_local_publications = false,
typename rclcpp::message_memory_strategy::MessageMemoryStrategy<MessageT, Alloc>::SharedPtr
Expand Down Expand Up @@ -203,11 +203,11 @@ class Node
rclcpp::callback_group::CallbackGroup::SharedPtr group = nullptr);

/* Create and return a Service. */
template<typename ServiceT, typename FunctorT>
template<typename ServiceT, typename CallbackT>
typename rclcpp::service::Service<ServiceT>::SharedPtr
create_service(
const std::string & service_name,
FunctorT callback,
CallbackT && callback,
rclcpp::callback_group::CallbackGroup::SharedPtr group = nullptr);

RCLCPP_PUBLIC
Expand Down
14 changes: 7 additions & 7 deletions rclcpp/include/rclcpp/node_impl.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ template<typename MessageT, typename CallbackT, typename Alloc>
typename rclcpp::subscription::Subscription<MessageT, Alloc>::SharedPtr
Node::create_subscription(
const std::string & topic_name,
CallbackT callback,
CallbackT && callback,
const rmw_qos_profile_t & qos_profile,
rclcpp::callback_group::CallbackGroup::SharedPtr group,
bool ignore_local_publications,
Expand All @@ -155,7 +155,7 @@ Node::create_subscription(

rclcpp::subscription::AnySubscriptionCallback<MessageT,
Alloc> any_subscription_callback(allocator);
any_subscription_callback.set(callback);
any_subscription_callback.set(std::forward<CallbackT>(callback));

using rosidl_generator_cpp::get_message_type_support_handle;

Expand Down Expand Up @@ -251,7 +251,7 @@ typename rclcpp::subscription::Subscription<MessageT, Alloc>::SharedPtr
Node::create_subscription(
const std::string & topic_name,
size_t qos_history_depth,
CallbackT callback,
CallbackT && callback,
rclcpp::callback_group::CallbackGroup::SharedPtr group,
bool ignore_local_publications,
typename rclcpp::message_memory_strategy::MessageMemoryStrategy<MessageT, Alloc>::SharedPtr
Expand All @@ -262,7 +262,7 @@ Node::create_subscription(
qos.depth = qos_history_depth;
return this->create_subscription<MessageT, CallbackT, Alloc>(
topic_name,
callback,
std::forward<CallbackT>(callback),
qos,
group,
ignore_local_publications,
Expand Down Expand Up @@ -313,19 +313,19 @@ Node::create_client(
return cli;
}

template<typename ServiceT, typename FunctorT>
template<typename ServiceT, typename CallbackT>
typename rclcpp::service::Service<ServiceT>::SharedPtr
Node::create_service(
const std::string & service_name,
FunctorT callback,
CallbackT && callback,
rclcpp::callback_group::CallbackGroup::SharedPtr group)
{
using rosidl_generator_cpp::get_service_type_support_handle;
auto service_type_support_handle =
get_service_type_support_handle<ServiceT>();

rclcpp::service::AnyServiceCallback<ServiceT> any_service_callback;
any_service_callback.set(callback);
any_service_callback.set(std::forward<CallbackT>(callback));

rmw_service_t * service_handle = rmw_create_service(
node_handle_.get(), service_type_support_handle, service_name.c_str());
Expand Down
12 changes: 6 additions & 6 deletions rclcpp/include/rclcpp/parameter_client.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -91,12 +91,12 @@ class AsyncParametersClient
void(std::shared_future<rcl_interfaces::msg::ListParametersResult>)
> callback = nullptr);

template<typename FunctorT>
template<typename CallbackT>
typename rclcpp::subscription::Subscription<rcl_interfaces::msg::ParameterEvent>::SharedPtr
on_parameter_event(FunctorT callback)
on_parameter_event(CallbackT && callback)
{
return node_->create_subscription<rcl_interfaces::msg::ParameterEvent>(
"parameter_events", callback, rmw_qos_profile_parameter_events);
"parameter_events", std::forward<CallbackT>(callback), rmw_qos_profile_parameter_events);
}

private:
Expand Down Expand Up @@ -149,11 +149,11 @@ class SyncParametersClient
const std::vector<std::string> & parameter_prefixes,
uint64_t depth);

template<typename FunctorT>
template<typename CallbackT>
typename rclcpp::subscription::Subscription<rcl_interfaces::msg::ParameterEvent>::SharedPtr
on_parameter_event(FunctorT callback)
on_parameter_event(CallbackT && callback)
{
return async_parameters_client_->on_parameter_event(callback);
return async_parameters_client_->on_parameter_event(std::forward<CallbackT>(callback));
}

private:
Expand Down

0 comments on commit 8c47f61

Please sign in to comment.