Program Listing for File parameter_handler.hpp¶
↰ Return to documentation for file (foxglove/include/foxglove/parameter_handler.hpp)
#pragma once
#include <foxglove/parameter.hpp>
#include <cstdint>
#include <functional>
#include <memory>
#include <optional>
#include <string_view>
#include <vector>
struct foxglove_get_parameters_responder;
struct foxglove_set_parameters_responder;
namespace foxglove {
namespace internal {
struct ForwarderAccess;
}
class GetParametersResponder final {
public:
void respond(std::vector<Parameter>&& params) &&;
~GetParametersResponder() = default;
GetParametersResponder(GetParametersResponder&&) noexcept = default;
GetParametersResponder& operator=(GetParametersResponder&&) noexcept = default;
GetParametersResponder(const GetParametersResponder&) = delete;
GetParametersResponder& operator=(const GetParametersResponder&) = delete;
private:
friend class WebSocketServer;
friend class RemoteAccessGateway;
friend struct internal::ForwarderAccess;
struct Deleter {
void operator()(foxglove_get_parameters_responder* ptr) const noexcept;
};
std::unique_ptr<foxglove_get_parameters_responder, Deleter> impl_;
explicit GetParametersResponder(foxglove_get_parameters_responder* ptr)
: impl_(ptr) {}
};
class SetParametersResponder final {
public:
void respond(std::vector<Parameter>&& params) &&;
~SetParametersResponder() = default;
SetParametersResponder(SetParametersResponder&&) noexcept = default;
SetParametersResponder& operator=(SetParametersResponder&&) noexcept = default;
SetParametersResponder(const SetParametersResponder&) = delete;
SetParametersResponder& operator=(const SetParametersResponder&) = delete;
private:
friend class WebSocketServer;
friend class RemoteAccessGateway;
friend struct internal::ForwarderAccess;
struct Deleter {
void operator()(foxglove_set_parameters_responder* ptr) const noexcept;
};
std::unique_ptr<foxglove_set_parameters_responder, Deleter> impl_;
explicit SetParametersResponder(foxglove_set_parameters_responder* ptr)
: impl_(ptr) {}
};
struct ParameterHandler {
std::function<void(
uint32_t client_id, std::optional<std::string_view> request_id,
const std::vector<std::string_view>& param_names, GetParametersResponder&& responder
)>
onGet;
std::function<void(
uint32_t client_id, std::optional<std::string_view> request_id,
const std::vector<ParameterView>& params, SetParametersResponder&& responder
)>
onSet;
};
} // namespace foxglove