/************************************************************/ /* NAME: */ /* ORGN: MIT */ /* FILE: HostSim.h */ /* DATE: */ /************************************************************/ #ifndef HOSTSIM_HEADER #define HOSTSIM_HEADER #include "MOOS/libMOOS/MOOSLib.h" #include #include #include #include #include #include class WebServer; // 模拟 pPowerManger 上位机:网页 <-> MOOSDB 桥 class HostSim : public CMOOSApp { public: HostSim(); ~HostSim(); protected: // Standard MOOSApp functions to overload bool OnNewMail(MOOSMSG_LIST &NewMail); bool Iterate(); bool OnConnectToServer(); bool OnStartUp(); void RegisterVariables(); public: // 由 WebServer 线程调用 // 网页下发的指令:key 为 MOOS 变量名,jsonValue 为已序列化的 JSON 字符串 void pushCommand(const std::string& key, const std::string& jsonValue); // 取当前所有反馈变量的 JSON 快照 std::string buildSnapshot(); private: void registerFeedbackVars(); bool drainCommands(); void handleWebMessage(const std::string& msg); private: // State variables // 反馈缓存:key -> 最新 JSON 字符串 std::mutex m_feedbackMutex; std::map m_feedback; bool m_feedbackDirty; // 待发送指令队列 std::mutex m_cmdMutex; std::queue > m_cmdQueue; // 网页服务器 WebServer* m_webServer; int m_webPort; }; #endif