mod_chromium.h 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. #ifndef _CHROMIUM_ENTITY_H
  2. #define _CHROMIUM_ENTITY_H
  3. #include "Chromium_server_g.h"
  4. #include "CWebsocketServer.h"
  5. #include<map>
  6. #include<string>
  7. #include<tuple>
  8. #if (defined _WIN32 || defined _WIN64)
  9. #include "job.h"
  10. #endif
  11. #include "guitask/enum.h"
  12. #include "../mod_healthmanager/HealthManager_msg_g.h"
  13. #include "../mod_ResourceWatcher/ResourceWatcher_msg_g.h"
  14. #include "Chromium_server_g.h"
  15. #include <boost/thread/mutex.hpp>
  16. //#define TEST_FUNCTION
  17. //ns::msg 在gcc下拼接有点问题,暂时不得不重新定义一个
  18. #define SP_MSG_HANDLE_NS_EX(ns, msg, ns_msg, OnMsg) \
  19. case eMsg_##msg: \
  20. if (eMsgSig_##msg == dwMessageSignature) { \
  21. ns_msg t; \
  22. ErrorCodeEnum Error = SpBuffer2Object(Buffer, t); \
  23. if (Error == Error_Succeed) \
  24. OnMsg(pszEntityName, dwMessageId, dwMessageSignature, t); \
  25. } else { \
  26. LOG_TRACE("%s signature mismatched!", #msg); \
  27. } \
  28. break;
  29. #pragma once
  30. namespace Chromium {
  31. #define BROWSER_TIMER_ID 0xF002
  32. #define BROWSER_TIMER_INTERVAL 3600000
  33. class CChromiumEntity;
  34. class ChromiumSession : public ChromiumSrv_ServerSessionBase
  35. {
  36. public:
  37. ChromiumSession(CChromiumEntity* pEntity) :m_pEntity(pEntity) {}
  38. virtual ~ChromiumSession() {}
  39. virtual void Handle_OpenBrowser(SpReqAnsContext<ChromiumSrv_OpenBrowser_Req, ChromiumSrv_OpenBrowser_Ans>::Pointer ctx);
  40. virtual void Handle_CloseBrowser(SpReqAnsContext<ChromiumSrv_CloseBrowser_Req, ChromiumSrv_CloseBrowser_Ans>::Pointer ctx);
  41. virtual void Handle_OpenCommonPage(SpReqAnsContext<ChromiumSrv_OpenCommonPage_Req, ChromiumSrv_OpenCommonPage_Ans>::Pointer ctx);
  42. virtual void Handle_CloseCommonPage(SpReqAnsContext<ChromiumSrv_CloseCommonPage_Req, ChromiumSrv_CloseCommonPage_Ans>::Pointer ctx);
  43. private:
  44. CChromiumEntity* m_pEntity;
  45. };
  46. class CChromiumEntity : public CEntityBase, public ILogListener, public IBroadcastListener, public ISysVarListener
  47. {
  48. public:
  49. CChromiumEntity();
  50. virtual ~CChromiumEntity();
  51. virtual const char* GetEntityName() const { return "Chromium"; }
  52. virtual bool IsService()const { return true; }
  53. virtual CServerSessionBase* OnNewSession(const char* /*pszRemoteEntityName*/, const char* /*pszParam*/)
  54. {
  55. return new ChromiumSession(this);
  56. }
  57. void OpenBrowser(SpReqAnsContext<ChromiumSrv_OpenBrowser_Req, ChromiumSrv_OpenBrowser_Ans>::Pointer ctx);
  58. void CloseBrowser(SpReqAnsContext<ChromiumSrv_CloseBrowser_Req, ChromiumSrv_CloseBrowser_Ans>::Pointer ctx);
  59. void OpenCommonPage(SpReqAnsContext<ChromiumSrv_OpenCommonPage_Req, ChromiumSrv_OpenCommonPage_Ans>::Pointer ctx);
  60. void CloseCommonPage(SpReqAnsContext<ChromiumSrv_CloseCommonPage_Req, ChromiumSrv_CloseCommonPage_Ans>::Pointer ctx);
  61. virtual void OnPaused();
  62. virtual void OnPreStart(CAutoArray<CSimpleStringA> strArgs, CSmartPointer<ITransactionContext> pTransactionContext);
  63. virtual void OnPreClose(EntityCloseCauseEnum eCloseCause, CSmartPointer<ITransactionContext> pTransactionContext);
  64. //void CefClintNotify();
  65. void exitClean();
  66. void FetchCustomMainUrl(CAutoArray<CSimpleStringA>& strArgs);
  67. bool HasCustomMainUrl() const { return ConfigManager::getInstance().m_strCustomMainUrl.length() > 0; }
  68. const char* GetCustomMainUrl() const { return ConfigManager::getInstance().m_strCustomMainUrl.c_str(); }
  69. bool HasCustomAdUrl() const { return ConfigManager::getInstance().m_strCustomAdUrl.length() > 0; }
  70. const char* GetCustomAdUrl() const { return ConfigManager::getInstance().m_strCustomAdUrl.c_str(); }
  71. bool IsConfigMode()
  72. {
  73. return ConfigManager::getInstance().m_installMode;
  74. }
  75. private:
  76. void OnTaskTimerListener(void* pData);
  77. #if (defined _WIN32 || defined _WIN64)
  78. void JobNotify();
  79. #endif
  80. void OnBrowserCacheClean(const char* pszEntityName, DWORD dwMessageId, DWORD dwMessageSignature, ResourceWatcher::BrowserCacheClean& evt);
  81. void generateCefclientTimer();
  82. void openMainPage();
  83. void openAdPage();
  84. void openExtendPage();
  85. void openInstallPage();
  86. void openStartupPage();
  87. void openPerformanceMonitorPage();
  88. void startWithCfg();
  89. bool CheckIsCardStore();
  90. private:
  91. CWebsocketServer* m_pWsServer;
  92. ITimerListener* m_pTimerListener, * pBusinessLimitTimerListener;//浏览器监控Timer,业务禁用Timer
  93. HANDLE m_hIOCP;
  94. HANDLE m_hThreadIOCP;
  95. boost::mutex m_eventContorl, m_eventConditionMu; //sysvarEvent变化时阻塞修改
  96. boost::mutex m_commonPageLock;//
  97. boost::condition_variable_any m_eventCondition;//满足有数据时激活线程
  98. CAutoArray<CSimpleStringA> m_strArgs;
  99. CSmartPointer<ITransactionContext> m_pTransactionContext;
  100. public:
  101. boost::timed_mutex m_firstStartMain;//首次启动主页
  102. int getBrowserStartTimes();
  103. private:
  104. //subscribe
  105. CUUID m_uidCameraListener, m_uuidAccessAuth, m_uuidResourceWatch,m_uidBrowserListenser, m_uuidAccessAuthErr, m_uuidAllFault, m_uuidVTMLoader;
  106. virtual void OnLog(const CAutoArray<CUUID>& SubIDs, const CUUID nLogID, const LogTypeEnum eLogType, const SeverityLevelEnum eLevel,
  107. const DWORD dwSysError, const DWORD dwUserCode, const DWORD dwEntityInstanceID, const WORD wEntityDevelID,
  108. const CAutoArray<DWORD>& Param, const char* pszEntityName, const char* pszModuleName, const char* pszMessage, const linkContext& pLinkInfo);
  109. virtual void OnSysVarEvent(const char* pszKey, const char* pszValue, const char* pszOldValue, const char* pszEntityName);
  110. void DoWithSysVarEvent();
  111. void DoWithErrMsgListUpdate();
  112. void DoWithTerminalStage_toA();
  113. void DoWithTerminalStage_toX();
  114. void DoWithTerminalStage_toOther(std::string terminalStageVal);
  115. void checkUrlStartTime();
  116. void DoBrowserCacheClearJob();
  117. void OnPreStart_Init(CAutoArray<CSimpleStringA>& strArgs, CSmartPointer<ITransactionContext>& pTransactionContext);
  118. bool OnPreStart_socketStart(CAutoArray<CSimpleStringA>& strArgs, CSmartPointer<ITransactionContext>& pTransactionContext);
  119. bool OnPreStart_register(CAutoArray<CSimpleStringA>& strArgs, CSmartPointer<ITransactionContext>& pTransactionContext);
  120. bool OnPreStart_openWeb();
  121. void startupPageClean();
  122. #ifdef TEST_FUNCTION
  123. public:
  124. void testLogError();
  125. #endif
  126. SP_BEGIN_MSG_DISPATCH_MAP(CChromiumEntity)
  127. SP_BEGIN_ENTITY_MSG("ResourceWatcher")
  128. SP_MSG_HANDLE_NS_EX(ResourceWatcher, BrowserCacheClean, ResourceWatcher::BrowserCacheClean, OnBrowserCacheClean)
  129. SP_END_ENTITY_MSG()
  130. //SP_BEGIN_ENTITY_MSG("HealthManager")
  131. //SP_MSG_HANDLE_NS(HealthManager, TradeManage, OnTradeManage)
  132. //SP_MSG_HANDLE_NS_EX(HealthManager, TerminalManager, HealthManager::TerminalManager, OnTerminalManage)
  133. //SP_END_ENTITY_MSG()
  134. SP_END_MSG_DISPATCH_MAP()
  135. };
  136. }
  137. #endif