1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- #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 <list>
- #include <atomic>
- #include <memory>
- #include <mutex>
- /**
- * @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<AlarmInfo_t>& listAlarm);
-
- private:
- /* 线程工作函数 */
- void task();
- /* 初始化数据 */
- bool initData();
- /* 清理数据 */
- void clearData();
- private:
- std::shared_ptr<spdlog::logger> 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<AlarmInfo_t> m_listAlarm; /* 报警信息列表 */
-
-
- };
- #endif // __THREADALARMMANAGER_H__
|