#pragma once #include #include #include #include #include "CommandTask.h" #include "Logger.h" #include "MetaTraderHandler.h" #include "MtMessage.h" class MtExpert { public: MtExpert(int handle, std::unique_ptr mt_handler); ~MtExpert(); void Deinit(); void SendEvent(int event_type, const std::string& payload); void SendResponse(const std::string& payload); void Process(std::unique_ptr command, TaskCallback callback); int GetCommandType(); std::string GetCommandPayload(); boost::signals2::signal OnEvent; boost::signals2::signal OnDeinit; private: Logger log_{ "MtExpert" }; int handle_; std::unique_ptr mt_handler_; std::queue> tasks_; std::unique_ptr current_task_; };