mod_heartbeat.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #ifndef __MOD_HEARTBEAT_H
  2. #define __MOD_HEARTBEAT_H
  3. #pragma once
  4. #include "SpBase.h"
  5. #include "HeartBeatFSM.h"
  6. #include "HeartBeat_server_g.h"
  7. using namespace HeartBeat;
  8. #include "HealthManager_msg_g.h"
  9. using namespace HealthManager;
  10. class HeartBeatServerSession : public HeartBeatService_ServerSessionBase
  11. {
  12. public:
  13. HeartBeatServerSession(CHeartBeatEntity* pEntity):m_pEntity(pEntity){}
  14. virtual ~HeartBeatServerSession(){}
  15. void Handle_Instruction(SpReqAnsContext<HeartBeatService_Instruction_Req, HeartBeatService_Instruction_Ans>::Pointer ctx);
  16. void Handle_CardActive(SpReqAnsContext<HeartBeatService_CardActive_Req, HeartBeatService_CardActive_Ans>::Pointer ctx);
  17. private:
  18. CHeartBeatEntity* m_pEntity;
  19. };
  20. class CHeartBeatEntity : public CEntityBase, public ISysVarListener, public IBroadcastListener
  21. {
  22. public:
  23. CHeartBeatEntity():m_bConnetedSS(false){}
  24. virtual ~CHeartBeatEntity(){}
  25. virtual const char *GetEntityName() const { return "HeartBeat"; }
  26. virtual void OnPreStart(CAutoArray<CSimpleStringA> strArgs,CSmartPointer<ITransactionContext> pTransactionContext)
  27. {
  28. LOG_FUNCTION();
  29. ErrorCodeEnum rt = m_fsm.Init(this);
  30. GetFunction()->RegistSysVarEvent("TerminalStage", this);
  31. CUUID uuidCardSwiper;
  32. GetFunction()->SubscribeBroadcast("CardSwiper", "", this, uuidCardSwiper);
  33. pTransactionContext->SendAnswer(rt);
  34. }
  35. virtual void OnPrePause(CSmartPointer<ITransactionContext> pTransactionContext)
  36. {
  37. pTransactionContext->SendAnswer(Error_Succeed);
  38. }
  39. virtual void OnPreContinue(CSmartPointer<ITransactionContext> pTransactionContext)
  40. {
  41. pTransactionContext->SendAnswer(Error_Succeed);
  42. }
  43. virtual void OnPreClose(EntityCloseCauseEnum eCloseCause,CSmartPointer<ITransactionContext> pTransactionContext)
  44. {
  45. pTransactionContext->SendAnswer(Error_Succeed);
  46. }
  47. virtual CServerSessionBase* OnNewSession(const char*,const char*)
  48. {
  49. LOG_FUNCTION();
  50. return new HeartBeatServerSession(this);
  51. }
  52. void Instruction(SpReqAnsContext<HeartBeatService_Instruction_Req, HeartBeatService_Instruction_Ans>::Pointer ctx)
  53. {
  54. InstructionEvent *pEvt = new InstructionEvent();
  55. pEvt->ctx = ctx;
  56. m_fsm.PostEventFIFO(pEvt);
  57. }
  58. void CardActive(SpReqAnsContext<HeartBeatService_CardActive_Req, HeartBeatService_CardActive_Ans>::Pointer ctx)
  59. {
  60. CardActiveEvent *pEvt = new CardActiveEvent();
  61. pEvt->ctx = ctx;
  62. m_fsm.PostEventFIFO(pEvt);
  63. }
  64. virtual void OnSysVarEvent(const char *pszKey,
  65. const char *pszValue, const char *pszOldValue, const char *pszEntityName);
  66. virtual void OnSelfTest(EntityTestEnum eTestType,CSmartPointer<ITransactionContext> pTransactionContext)
  67. {
  68. m_fsm.SelfTest(eTestType,pTransactionContext);
  69. }
  70. virtual bool IsService()const{return true;}
  71. virtual bool IsMultiThread()const{return false;}
  72. virtual void OnBroadcastEvent(CUUID SubID, const char *pszEntityName, DWORD dwMessageId, DWORD dwMessageSignature, CAutoBuffer Buffer);
  73. virtual void OnLog(const CAutoArray<CUUID> &SubIDs, const CUUID nLogID, const LogTypeEnum eLogType, const SeverityLevelEnum eLevel,
  74. const DWORD dwSysError, const DWORD dwUserCode, const DWORD dwEntityInstanceID, const WORD wEntityDevelID,
  75. const CAutoArray<DWORD> &Param, const char *pszEntityName, const char *pszModuleName,const char *pszMessage, const linkContext &pLinkInfo);
  76. private:
  77. CHeartBeatFSM m_fsm;
  78. bool m_bConnetedSS;
  79. };
  80. #endif //__MOD_HEARTBEAT_H