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 <rclcpp/contexts/default_context.hpp>
|
||||
#include <rclcpp/parameter.hpp>
|
||||
|
||||
#ifndef RCLCPP_RCLCPP_NODE_HPP_
|
||||
#include "node.hpp"
|
||||
|
@ -353,12 +354,14 @@ Node::get_parameters(
|
|||
{
|
||||
std::lock_guard<std::mutex> lock(mutex_);
|
||||
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;
|
||||
}))
|
||||
{
|
||||
results.push_back(kv.second);
|
||||
results.push_back(parameters_.at(name));
|
||||
}
|
||||
}
|
||||
return results;
|
||||
|
|
|
@ -53,11 +53,9 @@ public:
|
|||
std::shared_ptr<rcl_interfaces::srv::GetParameters::Response> response)
|
||||
{
|
||||
auto values = node->get_parameters(request->names);
|
||||
std::transform(values.cbegin(), values.cend(), std::back_inserter(response->values),
|
||||
[](const rclcpp::parameter::ParameterVariant & pvariant) {
|
||||
return pvariant.
|
||||
get_parameter_value();
|
||||
});
|
||||
for (auto & pvariant : values) {
|
||||
response->values.push_back(pvariant.get_parameter_value());
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
|
@ -82,12 +80,9 @@ public:
|
|||
std::shared_ptr<rcl_interfaces::srv::SetParameters::Response> response)
|
||||
{
|
||||
std::vector<rclcpp::parameter::ParameterVariant> pvariants;
|
||||
std::transform(request->parameters.cbegin(), request->parameters.cend(),
|
||||
std::back_inserter(pvariants),
|
||||
[](const rcl_interfaces::msg::Parameter & p) {
|
||||
return rclcpp::parameter::ParameterVariant::
|
||||
from_parameter(p);
|
||||
});
|
||||
for (auto & p : request->parameters) {
|
||||
pvariants.push_back(rclcpp::parameter::ParameterVariant::from_parameter(p));
|
||||
}
|
||||
auto results = node->set_parameters(pvariants);
|
||||
response->results = results;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue