ACAServer.h 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #ifndef ACASERVER_H
  2. #define ACASERVER_H
  3. /**
  4. * @file ACAServer.h
  5. * @author your name (you@domain.com)
  6. * @brief
  7. * @version 0.1
  8. * @date 2025-07-16
  9. *
  10. * @copyright Copyright (c) 2025
  11. *
  12. */
  13. /**
  14. 说明:
  15. 1、这个类初始化全局信息,读取配置文件,连接MQTT服务器,订阅主题等
  16. 2、从这里开启对比项服务
  17. 3、这里获取初始的检测参数
  18. 4、检测参数可以被动态库配置的从GInfo转移到了SysConfig中
  19. */
  20. #include <QObject>
  21. #include "FromMQTT.h"
  22. #include "FromWebAPI.h"
  23. #include "spdlog/spdlog.h"
  24. #include "ThreadCompareItemManager.h"
  25. class RTPServer;
  26. class ACAServer : public QObject
  27. {
  28. Q_OBJECT
  29. public:
  30. ACAServer();
  31. ~ACAServer();
  32. /* 初始化基础信息 */
  33. bool initGlobalInfo();
  34. /* 开启服务 */
  35. bool startService();
  36. private:
  37. /* 线程函数,定时删除录音线程的实例 */
  38. // void thread_deleteRecordThread();
  39. /* 线程函数,开启RTP监听服务,一个壳 */
  40. void thread_RTPServer();
  41. private:
  42. /* 读取配置文件 */
  43. bool readConfigFile();
  44. /* 等待webapi回复信息 */
  45. bool waitForWebAPIReply();
  46. /* 等待一些必选项设置成功,不成功会一直等待 */
  47. bool waitForRequiredOptions();
  48. /* 发送服务信息到MQTT中 */
  49. bool sendServerInfoToMQTT();
  50. /* 打印ACA服务一些基础配置参数 */
  51. void printACAServerConfig();
  52. private slots:
  53. /* 处理MQTT消息 */
  54. void do_receiveMQTTMessage(const QMQTT::Message& message);
  55. private:
  56. std::shared_ptr<spdlog::logger> m_logger = nullptr;
  57. std::atomic_bool m_isRunning = false; /* 线程运行标志位 */
  58. /* --------------------------------- MQTT --------------------------------- */
  59. FromMQTT m_fromMQTT;
  60. const QString m_webapiTopic = "LH_WEBINFO";
  61. QString m_mqttIP;
  62. int m_mqttPort = 1883; /* MQTT服务器端口 */
  63. /* --------------------------------- WebAPI --------------------------------- */
  64. FromWebAPI m_fromWebAPI;
  65. QString m_webAPIUrl; /* WebAPI地址 */
  66. QString m_webAPIID; /* WebAPI ID */
  67. const QString m_appType = "ACAWatch"; /* 应用类型 */
  68. std::atomic_bool m_isGetWebInfoSuccess = false; /* 是否获取WebAPI信息成功 */
  69. // ThreadCompareItemManager* m_threadCompareItemManager = nullptr; /* 对比项管理线程 */
  70. /* --------------------------------- RTP服务 --------------------------------- */
  71. RTPServer* m_rtpServer = nullptr; /* RTP服务对象 */
  72. };
  73. #endif /* ACASERVER_H */