mod_WatchDog.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #ifndef __WATCHDOG_H
  2. #define __WATCHDOG_H
  3. #pragma once
  4. #include "stdafx.h"
  5. #include "SpBase.h"
  6. #include "modVer.h"
  7. #include "SpTest.h"
  8. #include "WatchDogClass.h"
  9. #include "WatchDogFSM.h"
  10. #include "DevEntityCommBase.hpp"
  11. using namespace WatchDog;
  12. class CWatchDogEntity;
  13. class WatchDogServerSession : public WatchDogService_ServerSessionBase
  14. {
  15. public:
  16. WatchDogServerSession(CWatchDogEntity* pEntity) : m_pEntity(pEntity){}
  17. virtual ~WatchDogServerSession(){}
  18. virtual void Handle_StartWatch(SpReqAnsContext<WatchDogService_StartWatch_Req,WatchDogService_StartWatch_Ans>::Pointer ctx);
  19. virtual void Handle_Refresh(SpReqAnsContext<WatchDogService_Refresh_Req, WatchDogService_Refresh_Ans>::Pointer ctx);
  20. virtual void Handle_StopWatch(SpReqAnsContext<WatchDogService_StopWatch_Req, WatchDogService_StopWatch_Ans>::Pointer ctx);
  21. private:
  22. CWatchDogEntity* m_pEntity;
  23. };
  24. class CWatchDogEntity : public CDevAdptEntityBase
  25. {
  26. public:
  27. CWatchDogEntity(){}
  28. virtual ~CWatchDogEntity(){}
  29. virtual const char *GetEntityName() const { return "WatchDog"; }
  30. const char* GetEntityVersion() const { return MODULE_VERSION_FULL; }
  31. ON_ENTITYT_TEST()
  32. virtual void OnPreStart(CAutoArray<CSimpleStringA> strArgs,CSmartPointer<ITransactionContext> pTransactionContext)
  33. {
  34. LOG_FUNCTION();
  35. ErrorCodeEnum err = m_fsm.Init(this);
  36. pTransactionContext->SendAnswer(err);
  37. }
  38. virtual void OnPreClose(EntityCloseCauseEnum eCloseCause,CSmartPointer<ITransactionContext> pTransactionContext)
  39. {
  40. pTransactionContext->SendAnswer(Error_Succeed);
  41. }
  42. virtual void OnPrePause(CSmartPointer<ITransactionContext> pTransactionContext)
  43. {
  44. pTransactionContext->SendAnswer(Error_Succeed);
  45. }
  46. virtual CServerSessionBase* OnNewSession(const char*,const char*)
  47. {
  48. LOG_FUNCTION();
  49. return new WatchDogServerSession(this);
  50. }
  51. void StartWatch(SpReqAnsContext<WatchDogService_StartWatch_Req,WatchDogService_StartWatch_Ans>::Pointer ctx)
  52. {
  53. StartWatchEvent* e = new StartWatchEvent();
  54. e->ctx = ctx;
  55. m_fsm.PostEventFIFO(e);
  56. }
  57. void Refresh(SpReqAnsContext<WatchDogService_Refresh_Req,WatchDogService_Refresh_Ans>::Pointer ctx)
  58. {
  59. RefreshEvent* e = new RefreshEvent();
  60. e->ctx = ctx;
  61. m_fsm.PostEventFIFO(e);
  62. }
  63. void StopWatch(SpReqAnsContext<WatchDogService_StopWatch_Req,WatchDogService_StopWatch_Ans>::Pointer ctx)
  64. {
  65. StopWatchEvent* e = new StopWatchEvent();
  66. e->ctx = ctx;
  67. m_fsm.PostEventFIFO(e);
  68. }
  69. virtual bool IsService()const{return true;}
  70. private:
  71. CWatchDogFSM m_fsm;
  72. };
  73. #endif //__WATCHDOG_H