mod_heartbeat.h 3.7 KB

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