Merge pull request #90 from ros2/parameter_cleanup
This fixes the order of parameters returned
This commit is contained in:
commit
b9bf46ebd4
2 changed files with 12 additions and 14 deletions
|
@ -30,6 +30,7 @@
|
||||||
#include <rosidl_generator_cpp/service_type_support.hpp>
|
#include <rosidl_generator_cpp/service_type_support.hpp>
|
||||||
|
|
||||||
#include <rclcpp/contexts/default_context.hpp>
|
#include <rclcpp/contexts/default_context.hpp>
|
||||||
|
#include <rclcpp/parameter.hpp>
|
||||||
|
|
||||||
#ifndef RCLCPP_RCLCPP_NODE_HPP_
|
#ifndef RCLCPP_RCLCPP_NODE_HPP_
|
||||||
#include "node.hpp"
|
#include "node.hpp"
|
||||||
|
@ -353,12 +354,14 @@ Node::get_parameters(
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> lock(mutex_);
|
std::lock_guard<std::mutex> lock(mutex_);
|
||||||
std::vector<rclcpp::parameter::ParameterVariant> results;
|
std::vector<rclcpp::parameter::ParameterVariant> results;
|
||||||
for (auto & kv : parameters_) {
|
|
||||||
if (std::any_of(names.cbegin(), names.cend(), [&kv](const std::string & name) {
|
for (auto & name : names) {
|
||||||
|
if (std::any_of(parameters_.cbegin(), parameters_.cend(),
|
||||||
|
[&name](const std::pair<std::string, rclcpp::parameter::ParameterVariant> & kv) {
|
||||||
return name == kv.first;
|
return name == kv.first;
|
||||||
}))
|
}))
|
||||||
{
|
{
|
||||||
results.push_back(kv.second);
|
results.push_back(parameters_.at(name));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return results;
|
return results;
|
||||||
|
|
|
@ -53,11 +53,9 @@ public:
|
||||||
std::shared_ptr<rcl_interfaces::srv::GetParameters::Response> response)
|
std::shared_ptr<rcl_interfaces::srv::GetParameters::Response> response)
|
||||||
{
|
{
|
||||||
auto values = node->get_parameters(request->names);
|
auto values = node->get_parameters(request->names);
|
||||||
std::transform(values.cbegin(), values.cend(), std::back_inserter(response->values),
|
for (auto & pvariant : values) {
|
||||||
[](const rclcpp::parameter::ParameterVariant & pvariant) {
|
response->values.push_back(pvariant.get_parameter_value());
|
||||||
return pvariant.
|
}
|
||||||
get_parameter_value();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -82,12 +80,9 @@ public:
|
||||||
std::shared_ptr<rcl_interfaces::srv::SetParameters::Response> response)
|
std::shared_ptr<rcl_interfaces::srv::SetParameters::Response> response)
|
||||||
{
|
{
|
||||||
std::vector<rclcpp::parameter::ParameterVariant> pvariants;
|
std::vector<rclcpp::parameter::ParameterVariant> pvariants;
|
||||||
std::transform(request->parameters.cbegin(), request->parameters.cend(),
|
for (auto & p : request->parameters) {
|
||||||
std::back_inserter(pvariants),
|
pvariants.push_back(rclcpp::parameter::ParameterVariant::from_parameter(p));
|
||||||
[](const rcl_interfaces::msg::Parameter & p) {
|
}
|
||||||
return rclcpp::parameter::ParameterVariant::
|
|
||||||
from_parameter(p);
|
|
||||||
});
|
|
||||||
auto results = node->set_parameters(pvariants);
|
auto results = node->set_parameters(pvariants);
|
||||||
response->results = results;
|
response->results = results;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue