#pragma once #include #include #include #include #include #include #include "AlarmDefine.h" #include "LNContext.h" #include #include "MonitorObject.h" #define ROW_ARRAY_SIZE 50 #define MAX_HANDLE_THREAD_NUM 5 class CTask { public: CTask(LPBYTE, int, SOCKADDR*, void*); void join(); private: ~CTask(); public: LPBYTE pdata; int nlen; SOCKADDR addr; }; typedef struct tagResistance { char imei[50]; //TIMESTAMP_STRUCT time; char time[24]; uint8_t index; int data0; int data1; int data2; }RESISTANCE, *LPRESISTANCE; class CLNHandle :public CProtocolHandler { public: CLNHandle(); virtual ~CLNHandle(); virtual BOOL HandlePack(LPBYTE pPack, int nPackLen, SOCKADDR* psa, void* pClientContext = NULL) override; void SendAllClientSync(); //发送实时订阅包 void SendSubNotify(string momp); protected: //回复确认包 BOOL HandleRecvPack(CLNContext* pContext, E_ZL_PROTOCAL protocal, uint32_t packno); void HandleMoSync(LPHJDATAHEAD2 lpHead, char* json, int json_len, CLNContext* pContext); void HandleMpSync(LPHJDATAHEAD2 lpHead, char* json, int json_len, CLNContext* pContext); BOOL HandleSvgSync(LPHJDATAHEAD2 lpHead, char* json, int json_len, CLNContext* pContext); BOOL HandleReferSync(LPHJDATAHEAD2 lpHead, char* json, int json_len, CLNContext* pContext); BOOL HandleResistData(LPHJDATAHEAD2 lpHead, char* json, int json_len, CLNContext* pContext); BOOL HandleTempHumiData(LPHJDATAHEAD2 lpHead, char* json, int json_len, CLNContext* pContext); BOOL HandleAlarmSetSync(LPHJDATAHEAD2 lpHead, char* json, int json_len, CLNContext* pContext); BOOL HandleMove(LPHJDATAHEAD2 lpHead, char* json, int json_len, CLNContext* pContext); BOOL HandleAlarmData(LPHJDATAHEAD2 lpHead, char* json, int json_len, CLNContext* pContext); protected: void CompareMoSync(jsonxx::Object obj, CMonitorObject *pObject); void CompareMpSync(jsonxx::Object obj); private: std::thread* pThread[MAX_HANDLE_THREAD_NUM]; bool m_bWork; std::mutex m_mtx; std::map m_mapUser; uint8_t *m_dl_sync = nullptr; int m_dl_len = 0; };