#ifndef __THREADALARMMANAGER_H__ #define __THREADALARMMANAGER_H__ /** * @file ThreadAlarmManager.h * @author your name (you@domain.com) * @brief * @version 0.1 * @date 2025-07-19 * * @copyright Copyright (c) 2025 * * 处理报警信息 */ #include "FromWebAPI.h" #include "AlarmInfo.h" #include "GlobalVariable.h" #include "spdlog/spdlog.h" #include #include #include #include /** * @brief 处理报警信息,所有的报警信息都由这个线程写入数据库 * */ #define AlarmManager ThreadAlarmManager::instance() class ThreadAlarmManager { ThreadAlarmManager() = default; ThreadAlarmManager(const ThreadAlarmManager&) = delete; ThreadAlarmManager& operator=(const ThreadAlarmManager&) = delete; public: ~ThreadAlarmManager(); static ThreadAlarmManager& instance() { static ThreadAlarmManager instance; return instance; } /* 线程工作函数 */ void thread_task(); /* 停止线程 */ void thread_stop(); void thread_stopBlock(); /* 获取线程状态 */ EThreadState getThreadState() const { return m_threadState; } /* 添加报警内容 */ void addAlarmInfo(const AlarmInfo_t& alarmInfo); void addAlarmInfo(const std::list& listAlarm); private: /* 线程工作函数 */ void task(); /* 初始化数据 */ bool initData(); /* 清理数据 */ void clearData(); private: std::shared_ptr m_logger = nullptr; /* 线程基础信息 */ std::atomic_bool m_isRunning = false; /* 线程运行标志位 */ std::atomic_bool m_isStop = false; /* 线程停止标志位 */ EThreadState m_threadState = EThreadState::State_None; /* 线程状态 */ FromWebAPI m_fromWebAPI; /* 存储报警信息 */ std::mutex m_mutexListAlarm; /* 报警信息列表的互斥锁 */ std::list m_listAlarm; /* 报警信息列表 */ }; #endif // __THREADALARMMANAGER_H__