aboutsummaryrefslogtreecommitdiffstats
path: root/src/Handler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Handler.cpp')
-rw-r--r--src/Handler.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/Handler.cpp b/src/Handler.cpp
index 1c0cd12..b5ed9f0 100644
--- a/src/Handler.cpp
+++ b/src/Handler.cpp
@@ -14,3 +14,19 @@ std::vector<std::string> Handler::tokenizeArguments(const std::string &arguments
return tokens;
}
+
+Handler::CommandHandler::CommandHandler(Handler::CommandHandler &&o) noexcept {
+ // this is a copy constructor, disguised as a move constructor.. I am sorry
+ command = o.command;
+ func = o.func;
+ description = o.description; // this is the main problem, any "moved" object will point to the same description TODO: maybe smart pointer can help?
+ payload = o.payload;
+}
+
+Handler::json Handler::CommandHandler::exec(const std::string &arguments, const std::string &session) const {
+ return func(arguments, session, payload);
+}
+
+Handler::CommandHandler::CommandHandler(std::string command, Handler::handler_function func,
+ std::vector<json> *description, void *payload)
+ : command{std::move(command)}, func{std::move(func)}, description{description}, payload{payload} {}