UpgradeRunFSM.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. #ifndef RVC_MOD_UPGRADE_RUN_FSM_H_
  2. #define RVC_MOD_UPGRADE_RUN_FSM_H_
  3. #include "SpFSM.h"
  4. #include <list>
  5. #include "SpBase.h"
  6. using namespace std;
  7. class CUpgradeRunFSM : public FSMImpl<CUpgradeRunFSM>, public IFSMStateHooker
  8. {
  9. public:
  10. CUpgradeRunFSM(void);
  11. ~CUpgradeRunFSM(void);
  12. enum
  13. {
  14. Event_EnableUpgrade = EVT_USER+1,
  15. Event_DisableUpgrade,
  16. Event_StartUpgrade,
  17. Event_EndUpgrade,
  18. Event_CancelUpgrade,
  19. };
  20. struct StartUpgradeEvent : public FSMEvent
  21. {
  22. CSimpleStringA strPackName;
  23. int nPackType;
  24. StartUpgradeEvent(const CSimpleStringA &pack, const int nType)
  25. : FSMEvent(Event_StartUpgrade), strPackName(pack),nPackType(nType)
  26. {}
  27. };
  28. struct CancelUpgradeEvent : public FSMEvent
  29. {
  30. CSimpleStringA strPackName;
  31. CancelUpgradeEvent(const CSimpleStringA &pack)
  32. : FSMEvent(Event_CancelUpgrade), strPackName(pack)
  33. {}
  34. };
  35. ErrorCodeEnum GetRunState(CSimpleStringA &strPackName, char &cState);
  36. private:
  37. virtual ErrorCodeEnum OnInit();
  38. virtual ErrorCodeEnum OnExit();
  39. enum{s1, s2, s3};
  40. BEGIN_FSM_STATE(CUpgradeRunFSM)
  41. FSM_STATE_ENTRY(s1, "Disable",s1_on_entry,s1_on_exit,s1_on_event)
  42. FSM_STATE_ENTRY(s2, "Enable",s2_on_entry,s2_on_exit,s2_on_event)
  43. FSM_STATE_ENTRY(s3, "Upgrading",s3_on_entry,s3_on_exit,s3_on_event)
  44. END_FSM_STATE()
  45. BEGIN_FSM_RULE(CUpgradeRunFSM,s1)
  46. FSM_RULE_ENTRY(s1, s2, Event_EnableUpgrade, 0)
  47. FSM_RULE_ENTRY(s1, s3, Event_EnableUpgrade, 1)
  48. FSM_RULE_ENTRY_ANY(s2, s1, Event_DisableUpgrade)
  49. FSM_RULE_ENTRY_ANY(s2, s3, Event_StartUpgrade)
  50. FSM_RULE_ENTRY_ANY(s3, s1, Event_DisableUpgrade)
  51. FSM_RULE_ENTRY_ANY(s3, s2, Event_EndUpgrade)
  52. END_FSM_RULE()
  53. virtual void OnStateTrans(int iSrcState, int iDstState);
  54. void s1_on_entry();
  55. void s1_on_exit();
  56. unsigned int s1_on_event(FSMEvent* event);
  57. void s2_on_entry();
  58. void s2_on_exit();
  59. unsigned int s2_on_event(FSMEvent* event);
  60. void s3_on_entry();
  61. void s3_on_exit();
  62. unsigned int s3_on_event(FSMEvent* event);
  63. ErrorCodeEnum CheckInstallPackSign();
  64. bool IsManual();
  65. ErrorCodeEnum UnzipPack();
  66. ErrorCodeEnum NewUnzipPack();
  67. ErrorCodeEnum UncabPack();
  68. ErrorCodeEnum DeleteInstallingPack();
  69. DWORD waitSystem(const CSimpleStringA cmd, const CSimpleStringA par, BOOL nShow);
  70. DWORD SYSTEM_ON(CSimpleStringA cmdLine, BOOL isWait);
  71. ErrorCodeEnum CheckInstallConfig(CAutoArray<CSimpleStringA> &coverlist, CSimpleStringA &strErrMsg);
  72. ErrorCodeEnum InstallPack(bool &bSysInstall, bool &bLightPack, CSimpleStringA &strNewVersion, CSimpleStringA &strErrMsg);
  73. ErrorCodeEnum GetUnzipTempDir(CSimpleStringA &strUnzipDir);
  74. ErrorCodeEnum GetInstallConfigPath(CSimpleStringA &strConfigPath);
  75. CSimpleStringA GetFileName(const char *pszFullPath);
  76. CSimpleStringA GetFileDirectory(const char *pszFullPath);
  77. void RecursiveGetSubFiles(const char *pszDir, const char *pszTrimStart, list<CSimpleStringA>& retList);
  78. bool IsFileMatch(const char *pszFilter, const char *pszFileName);
  79. ErrorCodeEnum DeleteUnzipDir();
  80. CSimpleStringA GetSysPatchNameFromPackName(const char *pszPackName);
  81. bool CheckNewRunFilesSign();
  82. bool getOSVersion(DWORD &dwMajorVersion, DWORD &dwMinorVersion);
  83. public:
  84. CSimpleStringA m_strInstallPack;
  85. int m_nIntallPackType; // 当前正在安装的项的包类型,1,自动安装;2,手动安装
  86. char m_chInstallState; // N 未解压; Z 已解压;C 已检查; I 已安装
  87. };
  88. #endif //RVC_MOD_UPGRADE_RUN_FSM_H_