From 6f7b994684032060f0a2d7af82f4f3572293b8d6 Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Thu, 12 Jun 2025 21:41:41 +0800 Subject: internal!: organized internal structure, using cmake now --- src/commandHandler.hpp | 71 -------------------------------------------------- 1 file changed, 71 deletions(-) delete mode 100644 src/commandHandler.hpp (limited to 'src/commandHandler.hpp') diff --git a/src/commandHandler.hpp b/src/commandHandler.hpp deleted file mode 100644 index 89d19d6..0000000 --- a/src/commandHandler.hpp +++ /dev/null @@ -1,71 +0,0 @@ -#pragma once - -#include "session.hpp" -#include -#include -#include -#include -#include -#include - -class CCommandHandler { - public: - CCommandHandler(); - ~CCommandHandler(); - - struct SResult { - std::string result; - bool good = false; - }; - - struct SParseResult { - std::any data; - bool good = false; - }; - - struct SCommand { - bool requireAdmin = true; - std::string name; - std::function parser; - std::function exe; - }; - - bool isCommand(const std::string &str) const; - bool validCommand(const std::string &command) const; - // return false if command struct is invalid - bool registerCommand(const SCommand &command); - SResult newCommand(const std::string &command, const std::string &args, std::shared_ptr session) const; - void handleCommand(std::string input, std::shared_ptr user = nullptr) const; - - template - struct SMakeCommandArgs { - std::string name; - std::function(const std::string &args)> parser; - std::function exe; - }; - - template - static SCommand makeCommand(SMakeCommandArgs args) { - return { - .name = std::move(args.name), - .parser = [parser = std::move(args.parser)](const std::string &args) -> SParseResult { - auto [data, good] = parser(args); - return {.data = std::any(std::move(data)), .good = good}; - }, - .exe = [exe = std::move(args.exe)](const std::any &parsed) -> SResult { - try { - return exe(std::any_cast(parsed)); - } catch (const std::bad_any_cast &) { - return {.result = "Invalid data type", .good = false}; - } - } - }; - } - - private: - std::shared_ptr getCommand(const std::string &command) const; - SResult exeCommand(const std::shared_ptr command, const std::string &args) const; - - std::vector> m_vCommands; -}; -inline std::unique_ptr g_pCommandHandler; -- cgit v1.2.3