#ifndef _CHROMIUM_ENTITY_H #define _CHROMIUM_ENTITY_H #include "Chromium_server_g.h" #include "CWebsocketServer.h" #include #include #include #if (defined _WIN32 || defined _WIN64) #include "job.h" #include "..\\mod_browser\\IEBrowser_client_g.h" #include "..\\mod_browser\\IEBrowser_def_g.h" #include "..\\mod_browser\\IEBrowser_msg_g.h" #endif #include "modVer.h" #include "guitask/enum.h" #include "../mod_healthmanager/HealthManager_msg_g.h" #define SP_MSG_HANDLE_NS_EX(ns, msg, ns_msg, OnMsg) \ case eMsg_##msg: \ if (eMsgSig_##msg == dwMessageSignature) { \ ns_msg t; \ ErrorCodeEnum Error = SpBuffer2Object(Buffer, t); \ if (Error == Error_Succeed) \ OnMsg(pszEntityName, dwMessageId, dwMessageSignature, t); \ } else { \ LOG_TRACE("%s signature mismatched!", #msg); \ } \ break; #pragma once namespace Chromium { #define BROWSER_TIMER_ID 0xF002 #define BROWSER_TIMER_INTERVAL 3600000 class CChromiumEntity : public CEntityBase, public ILogListener, public IBroadcastListener, public ISysVarListener { public: CChromiumEntity(); virtual ~CChromiumEntity(); virtual const char* GetEntityName() const { return "Chromium"; } const char* GetEntityVersion() const { return MODULE_VERSION_FULL; } virtual bool IsService()const { return true; } virtual void OnPaused(); virtual void OnPreStart(CAutoArray strArgs, CSmartPointer pTransactionContext); virtual void OnPreClose(EntityCloseCauseEnum eCloseCause, CSmartPointer pTransactionContext); void CefClintNotify(); void exitClean(); bool HasCustomMainUrl() const { return !m_strCustomMainUrl.IsNullOrEmpty(); } const char* GetCustomMainUrl() const { return m_strCustomMainUrl; } private: void OnTaskTimerListener(void* pData); #if (defined _WIN32 || defined _WIN64) void JobNotify(); void OnCustomerCmd(const char* pszEntityName, DWORD dwMessageId, DWORD dwMessageSignature, IEBrowser::CustomerCmd& evt); #endif void generateCefclientTimer(); void generateBussinessLimitTimer(); private: CSystemStaticInfo m_sysInfo; CWebsocketServer* m_pWsServer; ITimerListener *m_pTimerListener, * pBusinessLimitTimerListener;//浏览器监控Timer,业务禁用Timer int m_iTcpBridgePort; std::map> m_cefArr;//open discribe: slv, job Handle, process Handle, cmdline HANDLE m_hIOCP; HANDLE m_hThreadIOCP; CSimpleStringA m_strCustomMainUrl; private: //subscribe CUUID m_uidCameraListener, m_uuidAccessAuth, m_uidBrowserListenser, m_uuidAccessAuthErr, m_uuidAllFault; virtual void OnLog(const CAutoArray& SubIDs, const CUUID nLogID, const LogTypeEnum eLogType, const SeverityLevelEnum eLevel, const DWORD dwSysError, const DWORD dwUserCode, const DWORD dwEntityInstanceID, const WORD wEntityDevelID, const CAutoArray& Param, const char* pszEntityName, const char* pszModuleName, const char* pszMessage); virtual void OnSysVarEvent(const char* pszKey, const char* pszValue, const char* pszOldValue, const char* pszEntityName); void OnTerminalManage(const char* pszEntityName, DWORD dwMessageId, DWORD dwMessageSignature, HealthManager::TerminalManager& evt);//终端锁定罚出 void OnBusinessLimitTimerListener(void* pData);//每3600s检测业务禁用 SP_BEGIN_MSG_DISPATCH_MAP(CChromiumEntity) #if (defined _WIN32 || defined _WIN64) SP_BEGIN_ENTITY_MSG("IEBrowser") SP_MSG_HANDLE_NS(IEBrowser, CustomerCmd, OnCustomerCmd) SP_END_ENTITY_MSG() #endif SP_BEGIN_ENTITY_MSG("HealthManager") //SP_MSG_HANDLE_NS(HealthManager, TradeManage, OnTradeManage) SP_MSG_HANDLE_NS_EX(HealthManager, TerminalManager, HealthManager::TerminalManager, OnTerminalManage) SP_END_ENTITY_MSG() SP_END_MSG_DISPATCH_MAP() }; } #endif