Program Listing for File requests.hpp
↰ Return to documentation for file (include/requests.hpp)
#ifndef RIG_RECONFIGURE_REQUESTS_HPP
#define RIG_RECONFIGURE_REQUESTS_HPP
#include <utility>
#include <vector>
#include <string>
#include <rcl_interfaces/msg/parameter_descriptor.hpp>
#include "ros_parameter.hpp"
struct Request {
enum class Type {
TERMINATE, QUERY_NODE_NAMES, QUERY_NODE_PARAMETERS, QUERY_PARAMETER_DESCRIPTIONS,
QUERY_PARAMETER_VALUES, MODIFY_PARAMETER_VALUE
};
explicit Request(Type type_) : type(type_) {};
virtual ~Request() = default;
Type type;
};
using RequestPtr = std::shared_ptr<Request>;
struct ParameterValueRequest : Request {
explicit ParameterValueRequest(
const std::vector<std::string> ¶meterNames_,
const std::vector<rcl_interfaces::msg::ParameterDescriptor> ¶meterDescriptors_)
: Request(Type::QUERY_PARAMETER_VALUES), parameterNames(parameterNames_),
parameterDescriptors(parameterDescriptors_) {};
std::vector<std::string> parameterNames;
std::vector<rcl_interfaces::msg::ParameterDescriptor> parameterDescriptors;
};
struct ParameterDescriptionRequest : Request {
explicit ParameterDescriptionRequest(const std::vector<std::string> ¶meterNames_) : Request(Type::QUERY_PARAMETER_DESCRIPTIONS), parameterNames(parameterNames_) {};
std::vector<std::string> parameterNames;
};
struct ParameterModificationRequest : Request {
ParameterModificationRequest(ROSParameter updatedParameter_) : Request(Type::MODIFY_PARAMETER_VALUE), parameter(std::move(updatedParameter_)) {};
ROSParameter parameter;
};
#endif // RIG_RECONFIGURE_REQUESTS_HPP