SpEntityPrivilege.h 5.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #pragma once
  2. #include "SpEntity.h"
  3. #include "hashset.h"
  4. #include "spinlock.h"
  5. class SpEntityPrivilege : public IEntityFunctionPrivilege, public SpEntity
  6. {
  7. public:
  8. SpEntityPrivilege(SpModule *pModule, sp_entity_t *ent, sp_cfg_shell_entity_t *cfg_ent, CEntityBase *pEntityBase);
  9. virtual ~SpEntityPrivilege();
  10. virtual ErrorCodeEnum Init();
  11. virtual void Term();
  12. virtual CSmartPointer<IEntityFunctionPrivilege> GetPrivilegeFunction();
  13. //
  14. // IEntityFunctionPrivilege
  15. //
  16. // entity management
  17. virtual ErrorCodeEnum StartEntity(const char *pszEntityName, const char *pszCmdLine,CSmartPointer<IAsynWaitSp> &pAsynWaitSp);
  18. virtual ErrorCodeEnum StopEntity(const char *pszEntityName,CSmartPointer<IAsynWaitSp> &pAsynWaitSp);
  19. virtual ErrorCodeEnum CloseEntity(const char *pszEntityName,CSmartPointer<IAsynWaitSp> &pAsynWaitSp);
  20. virtual ErrorCodeEnum TerminateEntity(const char *pszEntityName,CSmartPointer<IAsynWaitSp> &pAsynWaitSp);
  21. virtual ErrorCodeEnum PauseEntity(const char *pszEntityName,CSmartPointer<IAsynWaitSp> &pAsynWaitSp);
  22. virtual ErrorCodeEnum ContinueEntity(const char *pszEntityName,CSmartPointer<IAsynWaitSp> &pAsynWaitSp);
  23. virtual ErrorCodeEnum TestEntity(const char *pszEntityName,EntityTestEnum eTestType, CSmartPointer<IAsynWaitSp> &pAsynWaitSp);
  24. // regist entity event
  25. virtual ErrorCodeEnum RegistEntityLifeEvent(IEntityLifeListener *pListener);
  26. virtual ErrorCodeEnum UnregistLiftEvent();
  27. virtual ErrorCodeEnum RegistEntityStateEvent(const char *pszEntityName,IEntityStateListener *pListener);
  28. virtual ErrorCodeEnum UnregistEntityStateEvent(const char *pszEntityName);
  29. // blue screen
  30. virtual ErrorCodeEnum DisplayBlueScreen(const char *pszTitle);
  31. virtual ErrorCodeEnum UndisplayBlueScreen();
  32. // update related functions
  33. virtual ErrorCodeEnum Reboot(RebootTriggerEnum eTriggerReason,RebootWayEnum eWay);
  34. virtual ErrorCodeEnum CreateInstallNewVersion(CVersion NewSoftwareVersion,const char *pszPackageName);
  35. virtual ErrorCodeEnum BeginLightInstall(const char *pszPackageName);
  36. virtual ErrorCodeEnum CopyFileToNewVersion(const char *pszRelativeFile, int nCopyMode);
  37. virtual ErrorCodeEnum DeleteFileInNewVersion(const char *pszRelativeName);
  38. virtual ErrorCodeEnum RollBackToPreviousVersion();
  39. virtual ErrorCodeEnum RollBackToHistoryVersion(CVersion historyVersion);
  40. virtual ErrorCodeEnum UpgradeToNewVersion(bool bToSysInstall);
  41. virtual ErrorCodeEnum SetRunSucceed();
  42. virtual ErrorCodeEnum IsPackInstalled(const char *pszPackName, bool &bInstalled);
  43. virtual ErrorCodeEnum GetSystemStaticInfoForVersion(CVersion verSoftware,CSystemStaticInfo &StaticInfo);
  44. virtual ErrorCodeEnum BeginSysPackInstall(const char *pszPackageName, CSimpleStringA &strErrMsg);
  45. virtual ErrorCodeEnum IsInstalledSysPack(const char *pszPackageName);
  46. virtual ErrorCodeEnum ShowOuputConsole();
  47. virtual ErrorCodeEnum CloseOuputConsole();
  48. // debug
  49. virtual ErrorCodeEnum SetSysDebugLevel(const char *pszEntityName,DebugLevelEnum eDebugLevel,bool bPersist=false);
  50. virtual ErrorCodeEnum RefreshFrameworkState(FrameworkStateEnum eState);
  51. private:
  52. void on_entity_create(int entity_id, int trigger_entity_id);
  53. void on_entity_close(int entity_id, int trigger_entity_id, int cause_code);
  54. void on_entity_exception(int entity_id, int error, int entity_state);
  55. static void __on_entity_create(sp_mod_entity_life_listener_t *listener, int entity_id, int trigger_entity_id, void *user_data);
  56. 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);
  57. static void __on_entity_exception(sp_mod_entity_life_listener_t *listener, int entity_id, int error, int entity_state, void *user_data);
  58. void on_user_state(sp_mod_entity_state_listener_t *listener, int entity_id, int last_state, int curr_state);
  59. void on_entity_state(sp_mod_entity_state_listener_t *listener, int entity_id, int trigger_entity_id, int last_state, int curr_state);
  60. void on_create_connection(sp_mod_entity_state_listener_t *listener, int src_entity_id, int dst_entity_id);
  61. void on_close_connection(sp_mod_entity_state_listener_t *listener, int src_entity_id, int dst_entity_id);
  62. static void __on_user_state(sp_mod_entity_state_listener_t *listener, int entity_id, int last_state, int curr_state, void *user_data);
  63. 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);
  64. static void __on_create_connection(sp_mod_entity_state_listener_t *listener, int src_entity_id, int dst_entity_id, void *user_data);
  65. static void __on_close_connection(sp_mod_entity_state_listener_t *listener, int src_entity_id, int dst_entity_id, void *user_data);
  66. bool IsFileMatch(const char *pszFilter, const char *pszFileName);
  67. CSimpleStringA GetFileDirectory(const char *pszFullPath);
  68. bool WriteInstallLog(const char *pszPackName, const char *pLogText);
  69. bool IsWow64Process();
  70. bool GetSysUpgradeResult(const char *pszResultLog, ErrorCodeEnum &eErrorCode, CSimpleStringA &strErrMsg);
  71. bool RecursiveCopyDir(const char *pszSourceDir, const char *pszDestDir);
  72. protected:
  73. spinlock_t m_maplock;
  74. stringmap_t *m_pEntityStateListenerMap;
  75. sp_mod_entity_life_listener_t *m_pEntityLifeListener;
  76. };