Autostart parameter services (#478)

* Autostart parameter services
* Add bool start_parameter_services
This commit is contained in:
Shane Loretz 2018-05-25 13:07:59 -07:00 committed by GitHub
parent f9a78df9fe
commit d82ce9666c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 153 additions and 103 deletions

View file

@ -101,7 +101,8 @@ public:
rclcpp::Context::SharedPtr context,
const std::vector<std::string> & arguments,
bool use_global_arguments = true,
bool use_intra_process_comms = false);
bool use_intra_process_comms = false,
bool start_parameter_services = true);
RCLCPP_LIFECYCLE_PUBLIC
virtual ~LifecycleNode();

View file

@ -23,6 +23,7 @@
#include "rclcpp/intra_process_manager.hpp"
#include "rclcpp/parameter.hpp"
#include "rclcpp/create_publisher.hpp"
#include "rclcpp/create_service.hpp"
#include "rclcpp/create_subscription.hpp"
#include "rclcpp/type_support_decl.hpp"
@ -176,18 +177,9 @@ LifecycleNode::create_service(
const rmw_qos_profile_t & qos_profile,
rclcpp::callback_group::CallbackGroup::SharedPtr group)
{
rclcpp::AnyServiceCallback<ServiceT> any_service_callback;
any_service_callback.set(std::forward<CallbackT>(callback));
rcl_service_options_t service_options = rcl_service_get_default_options();
service_options.qos = qos_profile;
auto serv = rclcpp::Service<ServiceT>::make_shared(
node_base_->get_shared_rcl_node_handle(),
service_name, any_service_callback, service_options);
auto serv_base_ptr = std::dynamic_pointer_cast<rclcpp::ServiceBase>(serv);
node_services_->add_service(serv_base_ptr, group);
return serv;
return rclcpp::create_service<ServiceT, CallbackT>(
node_base_, node_services_,
service_name, std::forward<CallbackT>(callback), qos_profile, group);
}
template<typename ParameterT>

View file

@ -35,6 +35,7 @@
#include "rclcpp/node_interfaces/node_services.hpp"
#include "rclcpp/node_interfaces/node_timers.hpp"
#include "rclcpp/node_interfaces/node_topics.hpp"
#include "rclcpp/parameter_service.hpp"
#include "lifecycle_node_interface_impl.hpp" // implementation
@ -51,7 +52,8 @@ LifecycleNode::LifecycleNode(
rclcpp::contexts::default_context::get_global_default_context(),
{},
true,
use_intra_process_comms)
use_intra_process_comms,
true)
{}
LifecycleNode::LifecycleNode(
@ -60,7 +62,8 @@ LifecycleNode::LifecycleNode(
rclcpp::Context::SharedPtr context,
const std::vector<std::string> & arguments,
bool use_global_arguments,
bool use_intra_process_comms)
bool use_intra_process_comms,
bool start_parameter_services)
: node_base_(new rclcpp::node_interfaces::NodeBase(
node_name, namespace_, context, arguments, use_global_arguments)),
node_graph_(new rclcpp::node_interfaces::NodeGraph(node_base_.get())),
@ -69,8 +72,11 @@ LifecycleNode::LifecycleNode(
node_topics_(new rclcpp::node_interfaces::NodeTopics(node_base_.get())),
node_services_(new rclcpp::node_interfaces::NodeServices(node_base_.get())),
node_parameters_(new rclcpp::node_interfaces::NodeParameters(
node_topics_.get(),
use_intra_process_comms
node_base_,
node_topics_,
node_services_,
use_intra_process_comms,
start_parameter_services
)),
node_clock_(new rclcpp::node_interfaces::NodeClock(
node_base_,