#pragma once #include "core/inc/Types.h" #include "modules/ModuleAPI.h" namespace MBFT { class Module { private: void *module_shared_object{nullptr}; std::string module_path; void (*loaded_init)(void){nullptr}; void (*loaded_process)(MBFT::ModuleAPI& api, const MBFT::InboundMessage& message){nullptr}; bool enabled{true}; public: Module(const std::string& module_path); ~Module(void); void load(void); void unload(void); void reload(void); void disable(void); void enable(void); void init(void); void process(MBFT::ModuleAPI& api, const MBFT::InboundMessage& message); }; }