mod_GuiConsole.h 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. #pragma once
  2. #include "GUIConsole_def_g.h"
  3. #include "GUIConsole_server_g.h"
  4. using namespace GUIConsole;
  5. #include "SpBase.h"
  6. #include "guiconsole_define.h"
  7. #include <thread>
  8. #include <condition_variable>
  9. #include <mutex>
  10. #include <chrono>
  11. // 本地控制台 GUIConsole 0x508
  12. class CGUIConsoleEntity;
  13. class CGUIConsoleSession : public GUIConsoleService_ServerSessionBase
  14. {
  15. public:
  16. CGUIConsoleSession(CGUIConsoleEntity* pEntity) :m_pEntity(pEntity) {}
  17. virtual ~CGUIConsoleSession() {}
  18. virtual void Handle_OpenLogSender(SpReqAnsContext<GUIConsoleService_OpenLogSender_Req, GUIConsoleService_OpenLogSender_Ans>::Pointer ctx);
  19. virtual void Handle_CloseLogSender(SpReqAnsContext<GUIConsoleService_CloseLogSender_Req, GUIConsoleService_CloseLogSender_Ans>::Pointer ctx);
  20. virtual void Handle_OpenEntityMonitor(SpReqAnsContext<GUIConsoleService_OpenEntityMonitor_Req, GUIConsoleService_OpenEntityMonitor_Ans>::Pointer ctx);
  21. virtual void Handle_CloseEntityMonitor(SpReqAnsContext<GUIConsoleService_CloseEntityMonitor_Req, GUIConsoleService_CloseEntityMonitor_Ans>::Pointer ctx);
  22. virtual void Handle_OpenPerformanceSender(SpReqAnsContext<GUIConsoleService_OpenPerformanceSender_Req, GUIConsoleService_OpenPerformanceSender_Ans>::Pointer ctx);
  23. virtual void Handle_ClosePerformanceSender(SpReqAnsContext<GUIConsoleService_ClosePerformanceSender_Req, GUIConsoleService_ClosePerformanceSender_Ans>::Pointer ctx);
  24. virtual void Handle_VTMSystemControl(SpReqAnsContext<GUIConsoleService_VTMSystemControl_Req, GUIConsoleService_VTMSystemControl_Ans>::Pointer ctx);
  25. virtual void Handle_VTM_controlEntity(SpReqAnsContext<GUIConsoleService_VTM_controlEntity_Req, GUIConsoleService_VTM_controlEntity_Ans>::Pointer ctx);
  26. virtual void Handle_GetAllEntityList(SpReqAnsContext<GUIConsoleService_GetAllEntityList_Req, GUIConsoleService_GetAllEntityList_Ans>::Pointer ctx);
  27. virtual void Handle_GetBasicInformation(SpReqAnsContext<GUIConsoleService_GetBasicInformation_Req, GUIConsoleService_GetBasicInformation_Ans>::Pointer ctx);
  28. virtual void Handle_GetHelpInformationArr(SpReqAnsContext<GUIConsoleService_GetHelpInformationArr_Req, GUIConsoleService_GetHelpInformationArr_Ans>::Pointer ctx);
  29. virtual void Handle_GetHelpDetail(SpReqAnsContext<GUIConsoleService_GetHelpDetail_Req, GUIConsoleService_GetHelpDetail_Ans>::Pointer ctx);
  30. virtual void Handle_OpenCommonPage(SpReqAnsContext<GUIConsoleService_OpenCommonPage_Req, GUIConsoleService_OpenCommonPage_Ans>::Pointer ctx);
  31. virtual void Handle_CloseCommonPage(SpReqAnsContext<GUIConsoleService_CloseCommonPage_Req, GUIConsoleService_CloseCommonPage_Ans>::Pointer ctx);
  32. private:
  33. CGUIConsoleEntity* m_pEntity;
  34. };
  35. class CGUIConsoleEntity : public CEntityBase, public ILogListener, public ITimerListener, IEntityStateListener, ICallbackListener
  36. {
  37. public:
  38. CGUIConsoleEntity();
  39. virtual ~CGUIConsoleEntity();
  40. virtual const char *GetEntityName() const { return "GUIConsole"; }
  41. const char* GetEntityVersion() const { return MODULE_VERSION_FULL; }
  42. virtual bool IsService()const{return true;}
  43. virtual void OnPreStart(CAutoArray<CSimpleStringA> strArgs,CSmartPointer<ITransactionContext> pTransactionContext);
  44. void OnStarted() {}
  45. virtual CServerSessionBase* OnNewSession(const char* /*pszRemoteEntityName*/, const char* /*pszParam*/)
  46. {
  47. return new CGUIConsoleSession(this);
  48. }
  49. virtual void OnPreClose(EntityCloseCauseEnum eCloseCause,CSmartPointer<ITransactionContext> pTransactionContext) ;
  50. std::pair<DWORD, std::string> openLogSender(SpReqAnsContext<GUIConsoleService_OpenLogSender_Req, GUIConsoleService_OpenLogSender_Ans>::Pointer ctx);
  51. std::pair<DWORD, std::string> closeLogSender();
  52. std::pair<DWORD, std::string> openEntityMonitor(SpReqAnsContext<GUIConsoleService_OpenEntityMonitor_Req, GUIConsoleService_OpenEntityMonitor_Ans>::Pointer ctx);
  53. std::pair<DWORD, std::string> closeEntityMonitor();
  54. std::pair<DWORD, std::string> openPerformanceSender(SpReqAnsContext<GUIConsoleService_OpenPerformanceSender_Req, GUIConsoleService_OpenPerformanceSender_Ans>::Pointer ctx);
  55. std::pair<DWORD, std::string> closePerformanceSender();
  56. std::pair<DWORD, std::string> VTMSystemControl(SpReqAnsContext<GUIConsoleService_VTMSystemControl_Req, GUIConsoleService_VTMSystemControl_Ans>::Pointer ctx);
  57. std::pair<DWORD, std::string> VTM_controlEntity(SpReqAnsContext<GUIConsoleService_VTM_controlEntity_Req, GUIConsoleService_VTM_controlEntity_Ans>::Pointer ctx);
  58. std::pair<DWORD, std::string> GetBasicInformation(SpReqAnsContext<GUIConsoleService_GetBasicInformation_Req, GUIConsoleService_GetBasicInformation_Ans>::Pointer ctx);
  59. std::pair<DWORD, std::string> GetHelpInformationArr(SpReqAnsContext<GUIConsoleService_GetHelpInformationArr_Req, GUIConsoleService_GetHelpInformationArr_Ans>::Pointer ctx);
  60. std::pair<DWORD, std::string> GetHelpDetail(SpReqAnsContext<GUIConsoleService_GetHelpDetail_Req, GUIConsoleService_GetHelpDetail_Ans>::Pointer ctx);
  61. CSimpleString getRunVersion();
  62. private:
  63. // ILogListener
  64. virtual void OnLog(const CAutoArray<CUUID>& SubIDs, const CUUID nLogID, const LogTypeEnum eLogType, const SeverityLevelEnum eLevel,
  65. const DWORD dwSysError, const DWORD dwUserCode, const DWORD dwEntityInstanceID, const WORD wEntityDevelID,
  66. const CAutoArray<DWORD>& Param, const char* pszEntityName, const char* pszModuleName, const char* pszMessage, const linkContext& pLinkInfo);
  67. //ITimerListener
  68. void OnTimeout(DWORD dwTimerID);
  69. //IEntityStateListener
  70. virtual void OnEntityStateHook(const char* pszEntityName, const char* pszTriggerEntity, EntityStateEnum eState, EntityStateEnum eLastState);
  71. virtual void OnCeateConnection(const char* pszCallerEntity, const char* pszServiceEntity) {}
  72. virtual void OnCloseConnection(const char* pszCallerEntity, const char* pszServiceEntity) {}
  73. virtual void OnUserStateHook(const char* pszEntityName, DWORD dwState, DWORD dwLastState) {}
  74. void updateStartupEntity();
  75. public:
  76. //Async
  77. ErrorCodeEnum AsyncStartEntity(const char* entity_name, const char* cmdline, void* pData);
  78. ErrorCodeEnum AsyncStopEntity(const char* entity_name, void* pData);
  79. ErrorCodeEnum AsyncPauseEntity(const char* entity_name, void* pData);
  80. ErrorCodeEnum AsyncContinueEntity(const char* entity_name, void* pData);
  81. ErrorCodeEnum AsyncTerminateEntity(const char* entity_name, void* pData);
  82. //sync
  83. int sync_StartEntity(const char* entity_name, const char* cmdline, void* pData);
  84. int sync_StopEntity(const char* entity_name, void* pData);
  85. int sync_PauseEntity(const char* entity_name, void* pData);
  86. int sync_ContinueEntity(const char* entity_name, void* pData);
  87. int sync_TerminateEntity(const char* entity_name, void* pData);
  88. int sync_OpenLog(const char* entity_name, void* pData);
  89. ErrorCodeEnum GetEntity(const char* entity_name, EntityEntry& e);
  90. std::pair<DWORD, std::string> GetAllEntity(CAutoArray<EntityEntry>& Entities);
  91. void PostEntityVary(const char* entity_name);
  92. //ICallbackListener
  93. virtual void OnAnswer(CSmartPointer<IAsynWaitSp> pAsynWaitSp);
  94. private:
  95. bool m_isOpenLogSender, m_isOpenEntityMonitor, m_isOpenPerformanceSender;
  96. int m_performanceSenderFrequence, m_sendLogType;
  97. CUUID m_logSubID;
  98. std::thread *thread_performanceSend, *thread_entityMonitor;
  99. int m_longestEntityMonitor, m_leastEntityMonitor;
  100. bool m_entityMonitor_shouldwork;
  101. std::chrono::steady_clock::time_point m_entityMonitorlast_notify_time;
  102. std::vector<std::string> m_startupEntityArr;
  103. };