#pragma once #include "SpEntity.h" #include "hashset.h" #include "spinlock.h" class SpEntityPrivilege : public IEntityFunctionPrivilege, public SpEntity { public: SpEntityPrivilege(SpModule *pModule, sp_entity_t *ent, sp_cfg_shell_entity_t *cfg_ent, CEntityBase *pEntityBase); virtual ~SpEntityPrivilege(); virtual ErrorCodeEnum Init(); virtual void Term(); virtual CSmartPointer GetPrivilegeFunction(); // // IEntityFunctionPrivilege // // entity management virtual ErrorCodeEnum StartEntity(const char *pszEntityName, const char *pszCmdLine,CSmartPointer &pAsynWaitSp); virtual ErrorCodeEnum StopEntity(const char *pszEntityName,CSmartPointer &pAsynWaitSp); virtual ErrorCodeEnum CloseEntity(const char *pszEntityName,CSmartPointer &pAsynWaitSp); virtual ErrorCodeEnum TerminateEntity(const char *pszEntityName,CSmartPointer &pAsynWaitSp); virtual ErrorCodeEnum PauseEntity(const char *pszEntityName,CSmartPointer &pAsynWaitSp); virtual ErrorCodeEnum ContinueEntity(const char *pszEntityName,CSmartPointer &pAsynWaitSp); virtual ErrorCodeEnum TestEntity(const char *pszEntityName,EntityTestEnum eTestType, CSmartPointer &pAsynWaitSp); // regist entity event virtual ErrorCodeEnum RegistEntityLifeEvent(IEntityLifeListener *pListener); virtual ErrorCodeEnum UnregistLiftEvent(); virtual ErrorCodeEnum RegistEntityStateEvent(const char *pszEntityName,IEntityStateListener *pListener); virtual ErrorCodeEnum UnregistEntityStateEvent(const char *pszEntityName); virtual ErrorCodeEnum GetSpecifiedEntityState(const char* pszEntityName, EntityStateEnum& eEntityState, DWORD& dwUserState); // blue screen virtual ErrorCodeEnum DisplayBlueScreen(const char *pszTitle); virtual ErrorCodeEnum UndisplayBlueScreen(); // update related functions virtual ErrorCodeEnum Reboot(RebootTriggerEnum eTriggerReason,RebootWayEnum eWay); virtual ErrorCodeEnum CreateInstallNewVersion(CVersion NewSoftwareVersion, const char* pszPackageName, CSimpleStringA& strErrInfo); virtual ErrorCodeEnum GenerateNewInstallCfg(); virtual ErrorCodeEnum BeginLightInstall(const char *pszPackageName); virtual ErrorCodeEnum CopyFileToNewVersion(const char *pszRelativeFile, int nCopyMode); virtual ErrorCodeEnum DeleteFileInNewVersion(const char *pszRelativeName); virtual ErrorCodeEnum RollBackToPreviousVersion(); virtual ErrorCodeEnum RollBackToHistoryVersion(CVersion historyVersion); virtual ErrorCodeEnum UpgradeToNewVersion(bool bToSysInstall); virtual ErrorCodeEnum SetRunSucceed(); virtual ErrorCodeEnum IsPackInstalled(const char *pszPackName, bool &bInstalled); virtual ErrorCodeEnum GetSystemStaticInfoForVersion(CVersion verSoftware,CSystemStaticInfo &StaticInfo); virtual ErrorCodeEnum BeginSysPackInstall(const char *pszPackageName, CSimpleStringA &strErrMsg); virtual ErrorCodeEnum IsInstalledSysPack(const char *pszPackageName); virtual ErrorCodeEnum ShowOuputConsole(); virtual ErrorCodeEnum CloseOuputConsole(); virtual ErrorCodeEnum BeginLogSend(const char* endpoint, const char* topicSys, const char* topicUser , const char* topicBeidou, const char* bussSys, const char* bussUser, const char* vtmWeb); virtual ErrorCodeEnum SetHttpToken(const char* channelId, const char* token); virtual ErrorCodeEnum SetEntityPriority(const char* pszEntityName, EntityPriorityEnum nPriority); virtual ErrorCodeEnum GetEntityPriority(const char* pszEntityName, EntityPriorityEnum& nPriority); virtual void GetSendLogInfo(unsigned long* t_upload_TerminalSys_Suc, unsigned long* t_upload_TerminalUser_Suc, unsigned long* t_upload_BussinessSys_Suc, unsigned long* t_upload_BussinessUser_Suc, unsigned long* t_upload_beidou_Suc, unsigned long* t_upload_TerminalSys_Err, unsigned long* t_upload_TerminalUser_Err, unsigned long* t_upload_BussinessSys_Err, unsigned long* t_upload_BussinessUser_Err, unsigned long* t_upload_beidou_Err, unsigned long* t_discard_full, unsigned long* t_discard_RTI1002, unsigned long* curLogNum); //先调用这个去初始化url virtual ErrorCodeEnum InitCfgUrl(VTMInitParam& info); virtual ErrorCodeEnum TryUpdateCfg(); virtual ErrorCodeEnum TryUpdateCenterCfg(bool& isUpdate, bool& isReset, CSimpleString& version); virtual ErrorCodeEnum TryUpdateToken(CSimpleString& oldToken, CSimpleString& newToken); virtual ErrorCodeEnum GetToken(CSimpleString& curToken); virtual ErrorCodeEnum WriteTerminalNoToRootIni(CSimpleString terminalNo); virtual ErrorCodeEnum ModifyMemCfgParam(MemCfgParam& info); virtual ErrorCodeEnum TryUpdateVTMERRMSG(); virtual ErrorCodeEnum GetVTMErrMsgArr(CAutoArray& strErrorCodeArr, CAutoArray& strDescriptionArr, CAutoArray &strRemarkArr); // debug virtual ErrorCodeEnum SetSysDebugLevel(const char *pszEntityName,DebugLevelEnum eDebugLevel,bool bPersist=false); virtual ErrorCodeEnum RefreshFrameworkState(FrameworkStateEnum eState); private: void on_entity_create(int entity_id, int trigger_entity_id); void on_entity_close(int entity_id, int trigger_entity_id, int cause_code); void on_entity_exception(int entity_id, int error, int entity_state); static void __on_entity_create(sp_mod_entity_life_listener_t *listener, int entity_id, int trigger_entity_id, void *user_data); static void __on_entity_close(sp_mod_entity_life_listener_t *listener, int entity_id, int trigger_entity_id, int cause_code, void *user_data); static void __on_entity_exception(sp_mod_entity_life_listener_t *listener, int entity_id, int error, int entity_state, void *user_data); void on_user_state(sp_mod_entity_state_listener_t *listener, int entity_id, int last_state, int curr_state); void on_entity_state(sp_mod_entity_state_listener_t *listener, int entity_id, int trigger_entity_id, int last_state, int curr_state); void on_create_connection(sp_mod_entity_state_listener_t *listener, int src_entity_id, int dst_entity_id); void on_close_connection(sp_mod_entity_state_listener_t *listener, int src_entity_id, int dst_entity_id); static void __on_user_state(sp_mod_entity_state_listener_t *listener, int entity_id, int last_state, int curr_state, void *user_data); static void __on_entity_state(sp_mod_entity_state_listener_t *listener, int entity_id, int trigger_entity_id, int last_state, int curr_state, void *user_data); static void __on_create_connection(sp_mod_entity_state_listener_t *listener, int src_entity_id, int dst_entity_id, void *user_data); static void __on_close_connection(sp_mod_entity_state_listener_t *listener, int src_entity_id, int dst_entity_id, void *user_data); bool IsFileMatch(const char *pszFilter, const char *pszFileName); CSimpleStringA GetFileDirectory(const char *pszFullPath); bool WriteInstallLog(const char *pszPackName, const char *pLogText); bool IsWow64Process(); bool GetSysUpgradeResult(const char *pszResultLog, ErrorCodeEnum &eErrorCode, CSimpleStringA &strErrMsg); bool RecursiveCopyDir(const char* pszSourceDir, const char* pszDestDir, CSimpleStringA& strErrInfo); protected: spinlock_t m_maplock; stringmap_t *m_pEntityStateListenerMap; sp_mod_entity_life_listener_t *m_pEntityLifeListener; };