CModTools.h 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. #ifndef CHROMIUM_CMODTOOLS_H
  2. #define CHROMIUM_CMODTOOLS_H
  3. #include "precompile.h"
  4. #include "SpBase.h"
  5. #define CHROMIUM_TIMER_ID 0xF001
  6. #include <tuple>
  7. #include "guitask/enum.h"
  8. #include <memory>
  9. //#include <boost/serialization/singleton.hpp>
  10. //using boost::serialization::singleton;
  11. #include "guitask/singleton.hpp"
  12. #if (defined _WIN32 || defined _WIN64)
  13. #define CEFCLIENT_NAME "cefclient.exe"
  14. #else
  15. #define CEFCLIENT_NAME "cefclient"
  16. #endif
  17. namespace Chromium {
  18. BETTER_ENUM(ERR_PAGE_REASON, int, CameraConfig, CardStoreIsBusy, MachineTypeError, TerminalManagerKickOut,
  19. TerminalManagerOff, breakdown, warnPrompt, disabled, jobuncomplete, ErrNotify, main, Ad, extend, OutsideRequest, SpecialPageFromOtherEntity
  20. , Install, startup, performance_monitor)
  21. BETTER_ENUM(PAGE_TYPE, int, Deploy, CameraConfig, TerminalManager, errPage, Ad, slv, init, TradeManager
  22. , breakdown, extend, CardStoreIsBusy, Install, startup, performance_monitor)
  23. BETTER_ENUM(TradeManageCodeEnum, int, Undefined, Trade, JobUncomplete, Disabled)
  24. BETTER_ENUM(TerminalManageCodeEnum, int, Off, On, KickOut)
  25. class CModTools : public singleton_t::singleton<CModTools>
  26. {
  27. private:
  28. CEntityBase* m_pEntity;
  29. public:
  30. void InitCModTools(CEntityBase* pEntity);
  31. //绝望,c++98没有初始化列表
  32. std::pair<ErrorCodeEnum, int> StartChromiumBrowser(ERR_PAGE_REASON reason = ERR_PAGE_REASON::main,
  33. std::tuple < std::string, std::string> normalParam = std::tuple <std::string, std::string>("", ""),
  34. std::tuple<std::string, std::string, std::string, DWORD, DWORD> exParam = std::tuple<std::string, std::string, std::string, DWORD, DWORD>("", "", "", 0, 0));
  35. void StopChromiumBrowser(ERR_PAGE_REASON reason, bool stopAll = false);
  36. void StopSingleChromiumBrowserByName(std::string cefName);
  37. bool killAllChromium(); //通过taskkill 关闭掉所有的cefclient
  38. void killAllChromiumByThread(int seconds);
  39. bool killChromiumByName(std::string name);
  40. bool RestartProxyServer();
  41. void setWithMin(bool t_withMin) { m_withMin = t_withMin; };
  42. void setWithClose(bool t_withClose) { m_withClose = t_withClose; };
  43. void setWithDebugMode(bool t_withDebugMode) { m_withDebugMode = t_withDebugMode; };
  44. std::string getMagicStr() { return m_magicStr; };
  45. bool IsConfigWork()
  46. {
  47. return m_UserMgrUrlFultureStr.GetLength() > 0;
  48. }
  49. CSimpleString getFultureUrl() {
  50. return m_UserMgrUrlFultureStr;
  51. }
  52. void lockGuard();
  53. void unlockGuard();
  54. void SetSpecialPageParam(std::string t_name, std::string t_size, std::string t_point, int t_top)
  55. {
  56. m_specialPage_temp_name = t_name;
  57. m_specialPage_temp_size = t_size;
  58. m_specialPage_temp_point = t_point;
  59. m_specialPage_temp_top = t_top;
  60. }
  61. private:
  62. std::tuple<CSimpleStringA, CSimpleStringA, CSimpleStringA, CSimpleStringA, CSimpleStringA> ReadCenterConfigStr(CSimpleStringA entityName = "");
  63. std::pair<bool, std::string> getMainUrl();
  64. std::pair<bool, std::string> getAdUrl();
  65. std::pair<bool, std::string> getErrUrl(ERR_PAGE_REASON errType = ERR_PAGE_REASON::breakdown);
  66. std::pair<bool, std::string> getExtendUrl();
  67. #if defined(RVC_OS_WIN)
  68. std::string generateCefclientCmd(bool isExtend, std::string mainUrl);
  69. #endif //RVC_OS_WIN
  70. std::string generateMainCmd(std::string mainUrl);
  71. std::string generateInstallCmd(std::string installUrl);
  72. std::string generateAdCmd(std::string AdUrl);
  73. std::string generateSpecialPageFromOtherEntityCmd(std::string mainUrl);
  74. std::string generateCommonPage(std::string url, std::string name, std::string size, std::string point, int top);
  75. #if defined(RVC_OS_LINUX)
  76. //pagetype: 0: 首页全屏, 1:副屏全屏,2:错误页;3:外部调用
  77. std::string generateBrowserCMDForEverything(const std::string& url, int pageType);
  78. #endif //RVC_OS_LINUX
  79. /** [Gifur@2022125]*/
  80. /**n [Gifur@2022228]*/
  81. /*!
  82. * @brief
  83. * @param[in]
  84. * nBrowswerType:0:cefclientt,1:UOS;2:UOS2
  85. * nMonitorType:0:通用,1主屏,2:副屏
  86. * @param[out]
  87. * @return :
  88. */
  89. std::string getAdditionalUOSBrowserSettings(int nBrowswerType, int nMonitorType = 0);
  90. std::pair<bool, std::string> GenerateErrPage(ERR_PAGE_REASON errType,
  91. std::tuple < std::string, std::string> norParam, std::tuple<std::string, std::string, std::string, DWORD, DWORD> exParam);
  92. #if defined(_MSC_VER)
  93. std::pair<ErrorCodeEnum, int> openCef(std::string cmdline, bool isGuard = false, bool usingSystemCmd = true);
  94. #else
  95. std::pair<ErrorCodeEnum, int> openCef(std::string cmdline, bool isGuard = false, bool usingSystemCmd = false);
  96. #endif //_MSC_VER
  97. void cefClientGuardian(std::string cmdline);
  98. std::pair<bool, std::string> openAdPage();
  99. /** 应该跟健康约定了,准入不过,通过监护进程触发框架重启,这里默认框架启动时间再加上10分钟 [Gifur@2022324]*/
  100. std::string GetSpShellNextRebootTime();
  101. bool isOutsidePad();
  102. void setLimitReason(const char* reason);
  103. int StandardToStamp(const char* str_time, bool dateOnly);
  104. bool CheckTradeRecord();
  105. void InitBrowserUseMode();
  106. //0: 检测失败;1:使用旧版UOS浏览器uos-browser-stable ;2:使用新版UOS浏览器org.deepin.browser
  107. int ToGetUOSBrowserType();
  108. void UploadBrowserInfo(int usingType, LPCTSTR info);
  109. bool findRestartCode(DWORD userCode);//if true, restart the terminal
  110. DWORD spiltErrMsg(std::string errMsg);//split the errmsg to usercode
  111. public:
  112. bool notifyExist, breakdownExist, m_isAdOpen; //if notify exist, do not start other err page
  113. private:
  114. CSimpleString m_strSite, m_strMachineType;
  115. CSimpleString m_UserMgrUrlStr, m_UserMgrUrlNoSidebarStr, m_UserMgrUrlNoSidebarMutiStr, m_UserMgrUrlFultureStr, m_UserMgrAdStr;
  116. bool m_withMin, m_withClose, m_withDebugMode;
  117. std::string m_magicStr;
  118. /** 0:使用CefClient,1:使用旧版UOS浏览器uos-browser-stable ;2:使用新版UOS浏览器org.deepin.browser [Gifur@2022228]*/
  119. int m_UseUOSBrowser;
  120. bool m_isGuardMainBrowser;
  121. //for special page
  122. std::string m_specialPage_temp_name, m_specialPage_temp_size, m_specialPage_temp_point;
  123. int m_specialPage_temp_top;
  124. std::string m_strCacheHead;
  125. };
  126. template<class T>
  127. class TimerOutHelper : public ITimerListener
  128. {
  129. public:
  130. typedef void (T::* FuncTimer)(void* pUserdata);
  131. TimerOutHelper(T* p, FuncTimer pTimerFunc, void* pUserData, bool bDeleteSelf = false)
  132. : m_pObject(p), m_pUserData(pUserData), m_pTimer(pTimerFunc), m_bDeleteSelf(bDeleteSelf) {}
  133. virtual void OnTimeout(DWORD dwTimerID)
  134. {
  135. (m_pObject->*m_pTimer)(m_pUserData);
  136. if (m_bDeleteSelf)
  137. delete this;
  138. }
  139. private:
  140. void* m_pUserData;
  141. T* m_pObject;
  142. FuncTimer m_pTimer;
  143. bool m_bDeleteSelf;
  144. };
  145. }
  146. #endif