56 lines
1.4 KiB
C
56 lines
1.4 KiB
C
|
|
// 文件名: src/web/web_server.h
|
|||
|
|
#ifndef WEB_SERVER_H
|
|||
|
|
#define WEB_SERVER_H
|
|||
|
|
|
|||
|
|
#include "crow.h" // 引入 Crow 库的头文件
|
|||
|
|
#include "systemMonitor/system_monitor.h"
|
|||
|
|
#include <thread>
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief Web服务器模块
|
|||
|
|
* * 负责启动一个后台HTTP服务器,为前端提供RESTful API接口。
|
|||
|
|
* 它在自己的线程中运行,以避免阻塞主程序的io_context事件循环。
|
|||
|
|
*/
|
|||
|
|
class WebServer {
|
|||
|
|
public:
|
|||
|
|
/**
|
|||
|
|
* @brief 构造函数
|
|||
|
|
* @param monitor SystemMonitor的引用,用于获取系统状态数据
|
|||
|
|
* @param port Web服务器监听的端口号,默认为8080
|
|||
|
|
*/
|
|||
|
|
WebServer(SystemMonitor::SystemMonitor& monitor, uint16_t port = 8080);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 析构函数
|
|||
|
|
* * 确保在程序退出时,Web服务线程能够被安全地停止和清理。
|
|||
|
|
*/
|
|||
|
|
~WebServer();
|
|||
|
|
|
|||
|
|
// 禁止拷贝和赋值,因为该类管理着一个线程资源
|
|||
|
|
WebServer(const WebServer&) = delete;
|
|||
|
|
WebServer& operator=(const WebServer&) = delete;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 在后台线程中启动Web服务
|
|||
|
|
*/
|
|||
|
|
void start();
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 停止Web服务并等待线程退出
|
|||
|
|
*/
|
|||
|
|
void stop();
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
/**
|
|||
|
|
* @brief 设置所有的API路由(URL路径)
|
|||
|
|
*/
|
|||
|
|
void setup_routes();
|
|||
|
|
|
|||
|
|
crow::SimpleApp m_app; // Crow 应用实例
|
|||
|
|
SystemMonitor::SystemMonitor& m_monitor;
|
|||
|
|
uint16_t m_port;
|
|||
|
|
|
|||
|
|
std::thread m_thread; // 运行Web服务的后台线程
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
#endif // WEB_SERVER_H
|