CModTools.h 5.2 KB

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