#pragma once #include "GUIConsole_def_g.h" #include "GUIConsole_server_g.h" using namespace GUIConsole; #include "SpBase.h" #include "guiconsole_define.h" #include #include #include #include // 本地控制台 GUIConsole 0x508 class CGUIConsoleEntity; class CGUIConsoleSession : public GUIConsoleService_ServerSessionBase { public: CGUIConsoleSession(CGUIConsoleEntity* pEntity) :m_pEntity(pEntity) {} virtual ~CGUIConsoleSession() {} virtual void Handle_OpenLogSender(SpReqAnsContext::Pointer ctx); virtual void Handle_CloseLogSender(SpReqAnsContext::Pointer ctx); virtual void Handle_OpenEntityMonitor(SpReqAnsContext::Pointer ctx); virtual void Handle_CloseEntityMonitor(SpReqAnsContext::Pointer ctx); virtual void Handle_OpenPerformanceSender(SpReqAnsContext::Pointer ctx); virtual void Handle_ClosePerformanceSender(SpReqAnsContext::Pointer ctx); virtual void Handle_VTMSystemControl(SpReqAnsContext::Pointer ctx); virtual void Handle_VTM_controlEntity(SpReqAnsContext::Pointer ctx); virtual void Handle_GetAllEntityList(SpReqAnsContext::Pointer ctx); virtual void Handle_GetBasicInformation(SpReqAnsContext::Pointer ctx); virtual void Handle_GetHelpInformationArr(SpReqAnsContext::Pointer ctx); virtual void Handle_GetHelpDetail(SpReqAnsContext::Pointer ctx); virtual void Handle_OpenCommonPage(SpReqAnsContext::Pointer ctx); virtual void Handle_CloseCommonPage(SpReqAnsContext::Pointer ctx); private: CGUIConsoleEntity* m_pEntity; }; class CGUIConsoleEntity : public CEntityBase, public ILogListener, public ITimerListener, IEntityStateListener, ICallbackListener { public: CGUIConsoleEntity(); virtual ~CGUIConsoleEntity(); virtual const char *GetEntityName() const { return "GUIConsole"; } const char* GetEntityVersion() const { return MODULE_VERSION_FULL; } virtual bool IsService()const{return true;} virtual void OnPreStart(CAutoArray strArgs,CSmartPointer pTransactionContext); void OnStarted() {} virtual CServerSessionBase* OnNewSession(const char* /*pszRemoteEntityName*/, const char* /*pszParam*/) { return new CGUIConsoleSession(this); } virtual void OnPreClose(EntityCloseCauseEnum eCloseCause,CSmartPointer pTransactionContext) ; std::pair openLogSender(SpReqAnsContext::Pointer ctx); std::pair closeLogSender(); std::pair openEntityMonitor(SpReqAnsContext::Pointer ctx); std::pair closeEntityMonitor(); std::pair openPerformanceSender(SpReqAnsContext::Pointer ctx); std::pair closePerformanceSender(); std::pair VTMSystemControl(SpReqAnsContext::Pointer ctx); std::pair VTM_controlEntity(SpReqAnsContext::Pointer ctx); std::pair GetBasicInformation(SpReqAnsContext::Pointer ctx); std::pair GetHelpInformationArr(SpReqAnsContext::Pointer ctx); std::pair GetHelpDetail(SpReqAnsContext::Pointer ctx); CSimpleString getRunVersion(); private: // ILogListener virtual void OnLog(const CAutoArray& SubIDs, const CUUID nLogID, const LogTypeEnum eLogType, const SeverityLevelEnum eLevel, const DWORD dwSysError, const DWORD dwUserCode, const DWORD dwEntityInstanceID, const WORD wEntityDevelID, const CAutoArray& Param, const char* pszEntityName, const char* pszModuleName, const char* pszMessage, const linkContext& pLinkInfo); //ITimerListener void OnTimeout(DWORD dwTimerID); //IEntityStateListener virtual void OnEntityStateHook(const char* pszEntityName, const char* pszTriggerEntity, EntityStateEnum eState, EntityStateEnum eLastState); virtual void OnCeateConnection(const char* pszCallerEntity, const char* pszServiceEntity) {} virtual void OnCloseConnection(const char* pszCallerEntity, const char* pszServiceEntity) {} virtual void OnUserStateHook(const char* pszEntityName, DWORD dwState, DWORD dwLastState) {} void updateStartupEntity(); public: //Async ErrorCodeEnum AsyncStartEntity(const char* entity_name, const char* cmdline, void* pData); ErrorCodeEnum AsyncStopEntity(const char* entity_name, void* pData); ErrorCodeEnum AsyncPauseEntity(const char* entity_name, void* pData); ErrorCodeEnum AsyncContinueEntity(const char* entity_name, void* pData); ErrorCodeEnum AsyncTerminateEntity(const char* entity_name, void* pData); //sync int sync_StartEntity(const char* entity_name, const char* cmdline, void* pData); int sync_StopEntity(const char* entity_name, void* pData); int sync_PauseEntity(const char* entity_name, void* pData); int sync_ContinueEntity(const char* entity_name, void* pData); int sync_TerminateEntity(const char* entity_name, void* pData); int sync_OpenLog(const char* entity_name, void* pData); ErrorCodeEnum GetEntity(const char* entity_name, EntityEntry& e); std::pair GetAllEntity(CAutoArray& Entities); void PostEntityVary(const char* entity_name); //ICallbackListener virtual void OnAnswer(CSmartPointer pAsynWaitSp); private: bool m_isOpenLogSender, m_isOpenEntityMonitor, m_isOpenPerformanceSender; int m_performanceSenderFrequence, m_sendLogType; CUUID m_logSubID; std::thread *thread_performanceSend, *thread_entityMonitor; int m_longestEntityMonitor, m_leastEntityMonitor; bool m_entityMonitor_shouldwork; std::chrono::steady_clock::time_point m_entityMonitorlast_notify_time; std::vector m_startupEntityArr; };