Program Listing for File responses.hpp
↰ Return to documentation for file (include/responses.hpp)
#ifndef RIG_RECONFIGURE_RESPONSES_HPP
#define RIG_RECONFIGURE_RESPONSES_HPP
#include <utility>
#include <vector>
#include "ros_parameter.hpp"
struct Response {
enum class Type {
NODE_NAMES, PARAMETERS, MODIFICATION_RESULT, SERVICE_TIMEOUT
};
explicit Response(Type type_) : type(type_) {};
virtual ~Response() = default;
Type type;
};
using ResponsePtr = std::shared_ptr<Response>;
struct NodeNameResponse : public Response {
explicit NodeNameResponse(const std::vector<std::string> &nodeNames_) : Response(Type::NODE_NAMES), nodeNames(nodeNames_) {};
std::vector<std::string> nodeNames;
};
struct ParameterValueResponse : public Response {
ParameterValueResponse() : Response(Type::PARAMETERS) {};
std::vector<ROSParameter> parameters;
};
struct ParameterModificationResponse : public Response {
ParameterModificationResponse(std::string parameterName_, bool success_, std::string reason_) :
Response(Type::MODIFICATION_RESULT), parameterName(std::move(parameterName_)), success(success_),
reason(std::move(reason_)) {};
std::string parameterName;
bool success;
std::string reason;
};
struct ServiceTimeout : public Response {
explicit ServiceTimeout(std::string nodeName_) : Response(Type::SERVICE_TIMEOUT), nodeName(std::move(nodeName_)) {};
std::string nodeName;
};
#endif // RIG_RECONFIGURE_RESPONSES_HPP