Merge pull request #90 from ros2/parameter_cleanup

This fixes the order of parameters returned
This commit is contained in:
gerkey 2015-08-18 14:33:56 -07:00
commit b9bf46ebd4
2 changed files with 12 additions and 14 deletions

View file

@ -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;

View file

@ -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;
}