Added SyncParametersClient
This commit is contained in:
parent
f4bcd83c42
commit
9bf3d0839a
1 changed files with 69 additions and 0 deletions
|
@ -19,6 +19,7 @@
|
|||
|
||||
#include <rmw/rmw.h>
|
||||
|
||||
#include <rclcpp/executors.hpp>
|
||||
#include <rclcpp/macros.hpp>
|
||||
#include <rclcpp/node.hpp>
|
||||
|
||||
|
@ -156,6 +157,8 @@ class AsyncParametersClient
|
|||
{
|
||||
|
||||
public:
|
||||
RCLCPP_MAKE_SHARED_DEFINITIONS(AsyncParametersClient);
|
||||
|
||||
AsyncParametersClient(const rclcpp::node::Node::SharedPtr & node)
|
||||
: node_(node)
|
||||
{
|
||||
|
@ -233,6 +236,72 @@ private:
|
|||
rclcpp::client::Client<rcl_interfaces::DescribeParameters>::SharedPtr describe_parameters_client_;
|
||||
};
|
||||
|
||||
class SyncParametersClient
|
||||
{
|
||||
friend class rclcpp::executor::Executor;
|
||||
|
||||
public:
|
||||
RCLCPP_MAKE_SHARED_DEFINITIONS(SyncParametersClient);
|
||||
|
||||
SyncParametersClient(
|
||||
rclcpp::node::Node::SharedPtr & node)
|
||||
: node_(node)
|
||||
{
|
||||
executor_ = std::make_shared<rclcpp::executors::SingleThreadedExecutor>();
|
||||
async_parameters_client_ = std::make_shared<AsyncParametersClient>(node);
|
||||
}
|
||||
|
||||
SyncParametersClient(
|
||||
rclcpp::executor::Executor::SharedPtr & executor,
|
||||
rclcpp::node::Node::SharedPtr & node)
|
||||
: executor_(executor), node_(node)
|
||||
{
|
||||
async_parameters_client_ = std::make_shared<AsyncParametersClient>(node);
|
||||
}
|
||||
|
||||
std::vector<ParameterVariant>
|
||||
get_parameters(std::vector<std::string> parameter_names)
|
||||
{
|
||||
auto f = async_parameters_client_->get_parameters(parameter_names);
|
||||
return rclcpp::executors::spin_node_until_future_complete(*executor_, node_, f).get();
|
||||
}
|
||||
|
||||
std::vector<ParameterType>
|
||||
get_parameter_types(std::vector<std::string> parameter_names)
|
||||
{
|
||||
auto f = async_parameters_client_->get_parameter_types(parameter_names);
|
||||
return rclcpp::executors::spin_node_until_future_complete(*executor_, node_, f).get();
|
||||
}
|
||||
|
||||
std::vector<rcl_interfaces::ParameterSetResult>
|
||||
set_parameters(std::vector<ParameterVariant> parameters)
|
||||
{
|
||||
auto f = async_parameters_client_->set_parameters(parameters);
|
||||
return rclcpp::executors::spin_node_until_future_complete(*executor_, node_, f).get();
|
||||
}
|
||||
|
||||
rcl_interfaces::ParameterSetResult
|
||||
set_parameters_atomically(std::vector<ParameterVariant> parameters)
|
||||
{
|
||||
auto f = async_parameters_client_->set_parameters_atomically(parameters);
|
||||
return rclcpp::executors::spin_node_until_future_complete(*executor_, node_, f).get();
|
||||
}
|
||||
|
||||
rcl_interfaces::ParameterListResult
|
||||
list_parameters(
|
||||
std::vector<std::string> parameter_prefixes,
|
||||
uint64_t depth)
|
||||
{
|
||||
auto f = async_parameters_client_->list_parameters(parameter_prefixes, depth);
|
||||
return rclcpp::executors::spin_node_until_future_complete(*executor_, node_, f).get();
|
||||
}
|
||||
|
||||
private:
|
||||
rclcpp::executor::Executor::SharedPtr executor_;
|
||||
rclcpp::node::Node::SharedPtr node_;
|
||||
AsyncParametersClient::SharedPtr async_parameters_client_;
|
||||
};
|
||||
|
||||
} /* namespace parameter */
|
||||
|
||||
} /* namespace rclcpp */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue