ACAServer.h 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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. bool readConfigFile();
  39. /* 等待webapi回复信息 */
  40. bool waitForWebAPIReply();
  41. /* 发送服务信息到MQTT中 */
  42. bool sendServerInfoToMQTT();
  43. private:
  44. /* 线程函数,定时删除录音线程的实例 */
  45. void thread_deleteRecordThread();
  46. /* 线程函数,开启RTP监听服务,一个壳 */
  47. void thread_RTPServer();
  48. /* 打印ACA服务一些基础配置参数 */
  49. void printACAServerConfig();
  50. private slots:
  51. /* 处理MQTT消息 */
  52. void do_receiveMQTTMessage(const QMQTT::Message& message);
  53. private:
  54. std::shared_ptr<spdlog::logger> m_logger = nullptr;
  55. std::atomic_bool m_isRunning = false; /* 线程运行标志位 */
  56. /* --------------------------------- MQTT --------------------------------- */
  57. FromMQTT m_fromMQTT;
  58. const QString m_webapiTopic = "LH_WEBINFO";
  59. QString m_mqttIP;
  60. int m_mqttPort = 1883; /* MQTT服务器端口 */
  61. /* --------------------------------- WebAPI --------------------------------- */
  62. FromWebAPI m_fromWebAPI;
  63. QString m_webAPIUrl; /* WebAPI地址 */
  64. QString m_webAPIID; /* WebAPI ID */
  65. const QString m_appType = "ACAWatch"; /* 应用类型 */
  66. std::atomic_bool m_isGetWebInfoSuccess = false; /* 是否获取WebAPI信息成功 */
  67. // ThreadCompareItemManager* m_threadCompareItemManager = nullptr; /* 对比项管理线程 */
  68. /* --------------------------------- RTP服务 --------------------------------- */
  69. RTPServer* m_rtpServer = nullptr; /* RTP服务对象 */
  70. };
  71. #endif /* ACASERVER_H */