mod_chromium.h 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  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. #include "..\\mod_browser\\IEBrowser_client_g.h"
  11. #include "..\\mod_browser\\IEBrowser_def_g.h"
  12. #include "..\\mod_browser\\IEBrowser_msg_g.h"
  13. #else
  14. #include "modVer.h"
  15. #endif
  16. #include "guitask/enum.h"
  17. #include "../mod_healthmanager/HealthManager_msg_g.h"
  18. #include "../mod_ResourceWatcher/ResourceWatcher_msg_g.h"
  19. #include "Chromium_server_g.h"
  20. #include <boost/thread/mutex.hpp>
  21. //ns::msg 在gcc下拼接有点问题,暂时不得不重新定义一个
  22. #define SP_MSG_HANDLE_NS_EX(ns, msg, ns_msg, OnMsg) \
  23. case eMsg_##msg: \
  24. if (eMsgSig_##msg == dwMessageSignature) { \
  25. ns_msg t; \
  26. ErrorCodeEnum Error = SpBuffer2Object(Buffer, t); \
  27. if (Error == Error_Succeed) \
  28. OnMsg(pszEntityName, dwMessageId, dwMessageSignature, t); \
  29. } else { \
  30. LOG_TRACE("%s signature mismatched!", #msg); \
  31. } \
  32. break;
  33. #pragma once
  34. namespace Chromium {
  35. #define BROWSER_TIMER_ID 0xF002
  36. #define BROWSER_TIMER_INTERVAL 3600000
  37. class CChromiumEntity;
  38. class ChromiumSession : public ChromiumSrv_ServerSessionBase
  39. {
  40. public:
  41. ChromiumSession(CChromiumEntity* pEntity) :m_pEntity(pEntity) {}
  42. virtual ~ChromiumSession() {}
  43. virtual void Handle_OpenBrowser(SpReqAnsContext<ChromiumSrv_OpenBrowser_Req, ChromiumSrv_OpenBrowser_Ans>::Pointer ctx);
  44. virtual void Handle_CloseBrowser(SpReqAnsContext<ChromiumSrv_CloseBrowser_Req, ChromiumSrv_CloseBrowser_Ans>::Pointer ctx);
  45. private:
  46. CChromiumEntity* m_pEntity;
  47. };
  48. class CChromiumEntity : public CEntityBase, public ILogListener, public IBroadcastListener, public ISysVarListener
  49. {
  50. public:
  51. CChromiumEntity();
  52. virtual ~CChromiumEntity();
  53. virtual const char* GetEntityName() const { return "Chromium"; }
  54. #if (defined _WIN32 || defined _WIN64)
  55. #else
  56. const char* GetEntityVersion() const { return MODULE_VERSION_FULL; }
  57. #endif
  58. virtual bool IsService()const { return true; }
  59. virtual CServerSessionBase* OnNewSession(const char* /*pszRemoteEntityName*/, const char* /*pszParam*/)
  60. {
  61. return new ChromiumSession(this);
  62. }
  63. void OpenBrowser(SpReqAnsContext<ChromiumSrv_OpenBrowser_Req, ChromiumSrv_OpenBrowser_Ans>::Pointer ctx);
  64. void CloseBrowser(SpReqAnsContext<ChromiumSrv_CloseBrowser_Req, ChromiumSrv_CloseBrowser_Ans>::Pointer ctx);
  65. virtual void OnPaused();
  66. virtual void OnPreStart(CAutoArray<CSimpleStringA> strArgs, CSmartPointer<ITransactionContext> pTransactionContext);
  67. virtual void OnPreClose(EntityCloseCauseEnum eCloseCause, CSmartPointer<ITransactionContext> pTransactionContext);
  68. //void CefClintNotify();
  69. void exitClean();
  70. void FetchCustomMainUrl(CAutoArray<CSimpleStringA>& strArgs);
  71. bool HasCustomMainUrl() const { return !m_strCustomMainUrl.IsNullOrEmpty(); }
  72. const char* GetCustomMainUrl() const { return m_strCustomMainUrl; }
  73. bool HasCustomAdUrl() const { return !m_strCustomAdUrl.IsNullOrEmpty(); }
  74. const char* GetCustomAdUrl() const { return m_strCustomAdUrl; }
  75. bool IsConfigMode()
  76. {
  77. #if (defined _WIN32 || defined _WIN64)
  78. return false;
  79. #else
  80. static bool first(true);
  81. static bool result(false);
  82. if (first) {
  83. first = false;
  84. CSystemRunInfo runInfo;
  85. GetFunction()->GetSystemRunInfo(runInfo);
  86. if (runInfo.eState == FrameworkState_NotConfig)
  87. result = true;
  88. }
  89. return result;
  90. #endif
  91. }
  92. private:
  93. void OnTaskTimerListener(void* pData);
  94. #if (defined _WIN32 || defined _WIN64)
  95. void JobNotify();
  96. void OnCustomerCmd(const char* pszEntityName, DWORD dwMessageId, DWORD dwMessageSignature, IEBrowser::CustomerCmd& evt);
  97. #endif
  98. void OnBrowserCacheClean(const char* pszEntityName, DWORD dwMessageId, DWORD dwMessageSignature, ResourceWatcher::BrowserCacheClean& evt);
  99. void generateCefclientTimer();
  100. void generateBussinessLimitTimer();
  101. void openMainPage();
  102. void openAdPage();
  103. void openExtendPage();
  104. bool CheckIsCardStore();
  105. private:
  106. CSystemStaticInfo m_sysInfo;
  107. CWebsocketServer* m_pWsServer;
  108. ITimerListener* m_pTimerListener, * pBusinessLimitTimerListener;//浏览器监控Timer,业务禁用Timer
  109. int m_iTcpBridgePort;
  110. HANDLE m_hIOCP;
  111. HANDLE m_hThreadIOCP;
  112. CSimpleStringA m_strCustomMainUrl, m_strCustomAdUrl;
  113. bool m_runAd/*广告*/, m_runMain/*业务*/, m_runExtend/*低柜副屏*/, m_runLogin/*用户桌面,可能木有用*/, m_withBrowser/*是否需要与browser交互*/;
  114. bool m_withMin, m_withClose;
  115. public:
  116. boost::timed_mutex m_firstStartMain;//首次启动主页
  117. int getBrowserStartTimes();
  118. private:
  119. //subscribe
  120. CUUID m_uidCameraListener, m_uuidAccessAuth, m_uuidResourceWatch,m_uidBrowserListenser, m_uuidAccessAuthErr, m_uuidAllFault;
  121. virtual void OnLog(const CAutoArray<CUUID>& SubIDs, const CUUID nLogID, const LogTypeEnum eLogType, const SeverityLevelEnum eLevel,
  122. const DWORD dwSysError, const DWORD dwUserCode, const DWORD dwEntityInstanceID, const WORD wEntityDevelID,
  123. const CAutoArray<DWORD>& Param, const char* pszEntityName, const char* pszModuleName, const char* pszMessage, const linkContext& pLinkInfo);
  124. virtual void OnSysVarEvent(const char* pszKey, const char* pszValue, const char* pszOldValue, const char* pszEntityName);
  125. void OnTerminalManage(const char* pszEntityName, DWORD dwMessageId, DWORD dwMessageSignature, HealthManager::TerminalManager& evt);//终端锁定罚出
  126. void OnBusinessLimitTimerListener(void* pData);//每3600s检测业务禁用
  127. void checkUrlStartTime();
  128. void DoBrowserCacheClearJob();
  129. void OnPreStart_Init(CAutoArray<CSimpleStringA>& strArgs, CSmartPointer<ITransactionContext>& pTransactionContext);
  130. bool OnPreStart_socketStart(CAutoArray<CSimpleStringA>& strArgs, CSmartPointer<ITransactionContext>& pTransactionContext);
  131. bool OnPreStart_register(CAutoArray<CSimpleStringA>& strArgs, CSmartPointer<ITransactionContext>& pTransactionContext);
  132. bool OnPreStart_openWeb();
  133. SP_BEGIN_MSG_DISPATCH_MAP(CChromiumEntity)
  134. #if (defined _WIN32 || defined _WIN64)
  135. SP_BEGIN_ENTITY_MSG("IEBrowser")
  136. SP_MSG_HANDLE_NS(IEBrowser, CustomerCmd, OnCustomerCmd)
  137. SP_END_ENTITY_MSG()
  138. #endif
  139. SP_BEGIN_ENTITY_MSG("ResourceWatcher")
  140. SP_MSG_HANDLE_NS_EX(ResourceWatcher, BrowserCacheClean, ResourceWatcher::BrowserCacheClean, OnBrowserCacheClean)
  141. SP_END_ENTITY_MSG()
  142. //SP_BEGIN_ENTITY_MSG("HealthManager")
  143. //SP_MSG_HANDLE_NS(HealthManager, TradeManage, OnTradeManage)
  144. //SP_MSG_HANDLE_NS_EX(HealthManager, TerminalManager, HealthManager::TerminalManager, OnTerminalManage)
  145. //SP_END_ENTITY_MSG()
  146. SP_END_MSG_DISPATCH_MAP()
  147. };
  148. }
  149. #endif