12#include <dfx-utilities/JsonValidator.hpp>
13#include <dfx-utilities/SFINAEHelpers.hpp>
76 using Handler = std::move_only_function<bool (
UnixSessionPtr, nlohmann::json, std::string)>;
108 template<
typename PMF>
110 nlohmann::json
const & schema, PMF handler);
131 void _registerNewCommandImpl(
UnixRouter & router, std::string command,
132 nlohmann::json
const & schema, Handler handler);
138template<
typename PMF>
140 nlohmann::json
const & schema, PMF handler)
142 static_assert(std::is_member_function_pointer_v<PMF>,
"The handler must be a member function pointer");
143 using C = Utils::SFINAE::memberClass_t<PMF>;
144 static_assert(std::is_base_of_v<BaseCommandHandler, C>,
"The handler must be a member function of a class derived from BaseCommandHandler");
145 static_assert(std::is_convertible_v<C, BaseCommandHandler>,
"The base class must inherit from BaseCommandHandler publicly");
147 _registerNewCommandImpl(router, command, schema,
148 [handler,
this](
UnixSessionPtr session, nlohmann::json params, std::string
id)
149 {
return std::invoke(handler,
static_cast<C *
>(
this), session, std::move(params), std::move(
id)); });
void registerNewCommand(UnixRouter &router, std::string command, nlohmann::json const &schema, PMF handler)
Register a new command in the router with an associated params schema and member handler.
Definition BaseCommandHandler.hpp:139
BaseCommandHandler()=default
Default constructor.
bool validateParams(std::string_view command, nlohmann::json const ¶ms, std::string_view id, UnixSessionPtr session) const
Validate params for a command and reply with errors on failure.
JSON command router for the Unix domain socket control protocol.
Definition UnixRouter.hpp:78
One connected client session of a UnixServer control socket.
Definition UnixSession.hpp:76
Registry of JSON Schemas with validation helpers.
Definition JsonValidator.hpp:46
Definition BaseCommandHandler.hpp:24
Definition BaseCommandHandler.hpp:16
std::shared_ptr< UnixSession > UnixSessionPtr
Shared ownership pointer type for sessions.
Definition BaseCommandHandler.hpp:20