12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- #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<IEntityFunctionPrivilege> GetPrivilegeFunction();
- //
- // IEntityFunctionPrivilege
- //
- // entity management
- virtual ErrorCodeEnum StartEntity(const char *pszEntityName, const char *pszCmdLine,CSmartPointer<IAsynWaitSp> &pAsynWaitSp);
- virtual ErrorCodeEnum StopEntity(const char *pszEntityName,CSmartPointer<IAsynWaitSp> &pAsynWaitSp);
- virtual ErrorCodeEnum CloseEntity(const char *pszEntityName,CSmartPointer<IAsynWaitSp> &pAsynWaitSp);
- virtual ErrorCodeEnum TerminateEntity(const char *pszEntityName,CSmartPointer<IAsynWaitSp> &pAsynWaitSp);
- virtual ErrorCodeEnum PauseEntity(const char *pszEntityName,CSmartPointer<IAsynWaitSp> &pAsynWaitSp);
- virtual ErrorCodeEnum ContinueEntity(const char *pszEntityName,CSmartPointer<IAsynWaitSp> &pAsynWaitSp);
- virtual ErrorCodeEnum TestEntity(const char *pszEntityName,EntityTestEnum eTestType, CSmartPointer<IAsynWaitSp> &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);
- // 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);
- 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();
- // 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);
- protected:
- spinlock_t m_maplock;
- stringmap_t *m_pEntityStateListenerMap;
- sp_mod_entity_life_listener_t *m_pEntityLifeListener;
- };
|