aboutsummaryrefslogtreecommitdiffstats
path: root/include/Handler.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/Handler.hpp')
-rw-r--r--include/Handler.hpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/include/Handler.hpp b/include/Handler.hpp
index 3aed302..3328d91 100644
--- a/include/Handler.hpp
+++ b/include/Handler.hpp
@@ -3,6 +3,7 @@
#include <queue>
#include <string>
#include <functional>
+#include <utility>
#include "crow.h"
@@ -12,14 +13,26 @@ namespace Handler {
void *payload)> handler_function;
struct CommandHandler {
+ CommandHandler(std::string command, handler_function func, std::queue<json> *description, void *payload = nullptr)
+ : command{std::move(command)}, func{std::move(func)}, description{description}, payload{payload} {}
+
~CommandHandler() {
delete description;
+ description = nullptr;
+ }
+
+ CommandHandler(CommandHandler &&o) noexcept {
+ func = o.func;
+ description = o.description;
+ o.description = nullptr;
+ payload = o.payload;
}
[[nodiscard]] json exec(std::string const &arguments, std::string const &session) const {
return func(arguments, session, payload);
}
+ std::string command;
handler_function func{nullptr};
// handler takes ownership of the description, using it after passing is unsafe
std::queue<json> *description{nullptr};