hwc_state_base.h 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /*
  2. * =====================================================================================
  3. *
  4. * Filename: sync_state_manager.h
  5. *
  6. * Description: HwcStateManager class definition.
  7. *
  8. * Version: 1.0
  9. * Created: 13/01/2021
  10. * Revision: none
  11. * Compiler: gcc
  12. *
  13. * Author: chenyujie, chenyujie28@jd.com@jd.com
  14. * Company: JD.com, Inc.
  15. *
  16. * =====================================================================================
  17. */
  18. #ifndef HWC_STATE_BASE_H_
  19. #define HWC_STATE_BASE_H_
  20. #include <assert.h>
  21. // local
  22. #include "comm.h"
  23. #include "hwc_state_manager.h"
  24. // common
  25. #include "log/log.h"
  26. #include "mem_check.h"
  27. class HwcStateBase
  28. {
  29. public:
  30. HwcStateBase() : p_hwc_state_manager_(NULL) {};
  31. virtual ~HwcStateBase() {};
  32. public:
  33. /// **************************
  34. /// 进入当前状态时,一些处理,比如: 初始化
  35. /// **************************
  36. virtual void Enter(void) = 0;
  37. /// **************************
  38. /// 退出当前状态时,一些处理
  39. /// **************************
  40. virtual void Exit(void) = 0;
  41. /// **************************
  42. /// 当前状态时,所要处理的业务逻辑,包括:状态跳转判断逻辑
  43. /// **************************
  44. virtual void HandleEvent() = 0;
  45. protected:
  46. HwcStateManager* p_hwc_state_manager_;
  47. };
  48. // 减少冗余代码编写
  49. #define SYNCSTATE_NAME(stateName) stateName##State
  50. #define SyncState(stateName) \
  51. class SYNCSTATE_NAME(stateName) : public HwcStateBase \
  52. { \
  53. public: \
  54. SYNCSTATE_NAME(stateName)(HwcStateManager*); \
  55. virtual ~SYNCSTATE_NAME(stateName)(); \
  56. \
  57. public: \
  58. virtual void Enter(void); \
  59. virtual void Exit(void); \
  60. virtual void HandleEvent();
  61. #define ENDFLAG };
  62. #endif