#pragma once #include "LNBuffer.h" #include "LNHandle.h" #include #include #include #include #include #include #include "MGWSServer.h" #include "ProactorTask.h" #include #include "LNAcceptor.h" extern bool g_bLog; extern time_t g_stStart; extern string g_strExepath; //程序目录 extern string g_strVersion; //程序版本 typedef struct tagFileData { char* data = nullptr; uint32_t len = 0; uint32_t crc = 0; time_t ctime = 0; public: tagFileData() { ctime = time(NULL); } void Join(); private: ~tagFileData() { delete[] data; len = 0; crc = 0; ctime = 0; } }UPGRADE_FILE_DATA, *LPUPGRADE_FILE_DATA; class CAppService { public: CAppService(); virtual ~CAppService(); public: static CAppService* Instance() { return &obj; }; bool Start(); void Stop(); CLNHandle* GetHandle() { return m_pHandle; }; CLNAcceptor* GetAcceptor() { return m_pAcceptor; }; inline CMGWSServer* GetMgServer() { return m_mgServer; } static BOOL FileDataConvertCharData(const uint8_t* filedata, const int filelen, char* strData); BOOL m_bHaveDeviceUpgrade = FALSE; time_t m_tDeviceUpgrade = 0; private: static void ThreadProcForHTTP(DWORD_PTR); static void ThreadProcCreateTable(DWORD_PTR); private: CString m_strIniPath; static CAppService obj; bool m_bRun = false; CLNHandle* m_pHandle = nullptr; CLNAcceptor* m_pAcceptor = nullptr; CMGWSServer* m_mgServer = nullptr; CProactorTask *m_pProactorTask = nullptr; std::thread *m_pCreateTableThread = nullptr; bool m_bWork = false; std::thread *m_pHttpThread = nullptr; static httplib::Server m_svr; //磁盘告警 static void ThreadProcForSpace(DWORD_PTR); std::thread* m_pThreadSpace = nullptr; int m_nInterval = 3600; //间隔一个小时执行一次磁盘判断 time_t m_tmLastSpaceTime = 0; };