CModTools.h 6.3 KB

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