InitializerFSM.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #ifndef __INITIALIZER_FSM_H
  2. #define __INITIALIZER_FSM_H
  3. #include "SpFSM.h"
  4. #include "comm.h"
  5. class CInitializerFSM : public FSMImpl<CInitializerFSM>, public IFSMStateHooker
  6. {
  7. public:
  8. enum
  9. {
  10. Event_ShowGUI = EVT_USER + 1,
  11. Event_ShowNewGUI,
  12. Event_StartLogin,
  13. Event_ConnectionOK,
  14. Event_LoginResult,
  15. Event_InitMKResult,
  16. Event_Disconnect,
  17. Event_SyncPKResult,
  18. Event_ReStart
  19. };
  20. CInitializerFSM();
  21. ~CInitializerFSM();
  22. virtual void OnStateTrans(int iSrcState, int iDstState);
  23. virtual ErrorCodeEnum OnInit();
  24. virtual ErrorCodeEnum OnExit();
  25. bool IsInitializeSucc();
  26. enum{s1, s2, s3, s4, s5};
  27. BEGIN_FSM_STATE(CInitializerFSM)
  28. FSM_STATE_ENTRY(s1, "Disable",s1_on_entry,s1_on_exit,s1_on_event)
  29. FSM_STATE_ENTRY(s2, "Login",s2_on_entry,s2_on_exit,s2_on_event)
  30. FSM_STATE_ENTRY(s3, "InitMK",s3_on_entry,s3_on_exit,s3_on_event) // 下载集中配置及初始化主密钥
  31. FSM_STATE_ENTRY(s4, "Succeed",s4_on_entry,s4_on_exit,s4_on_event)
  32. FSM_STATE_ENTRY(s5, "Failed",s5_on_entry,s5_on_exit,s5_on_event)
  33. END_FSM_STATE()
  34. BEGIN_FSM_RULE(CInitializerFSM,s1)
  35. FSM_RULE_ENTRY_ANY(s1, s2, Event_StartLogin)
  36. FSM_RULE_ENTRY(s2, s3, Event_LoginResult, 0)
  37. FSM_RULE_ENTRY(s2, s5, Event_LoginResult, 1)
  38. FSM_RULE_ENTRY_ANY(s2, s1, Event_Disconnect)
  39. FSM_RULE_ENTRY_ANY(s3, s1, Event_Disconnect)
  40. FSM_RULE_ENTRY(s3, s4, Event_InitMKResult, 0)
  41. FSM_RULE_ENTRY(s3, s5, Event_InitMKResult, 1)
  42. FSM_RULE_ENTRY_ANY(s4, s1, Event_ReStart)
  43. FSM_RULE_ENTRY_ANY(s5, s1, Event_ReStart)
  44. FSM_RULE_ENTRY_ANY(s5, s2, Event_StartLogin)
  45. END_FSM_RULE()
  46. void s1_on_entry();
  47. void s1_on_exit();
  48. unsigned int s1_on_event(FSMEvent* event);
  49. void s2_on_entry();
  50. void s2_on_exit();
  51. unsigned int s2_on_event(FSMEvent* event);
  52. void s3_on_entry();
  53. void s3_on_exit();
  54. unsigned int s3_on_event(FSMEvent* event);
  55. void s4_on_entry();
  56. void s4_on_exit();
  57. unsigned int s4_on_event(FSMEvent* event);
  58. void s5_on_entry();
  59. void s5_on_exit();
  60. unsigned int s5_on_event(FSMEvent* event);
  61. };
  62. #endif // !__INITIALIZER_FSM_H