mod_heartbeat.h 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. pTransactionContext->SendAnswer(rt);
  32. }
  33. virtual void OnPrePause(CSmartPointer<ITransactionContext> pTransactionContext)
  34. {
  35. pTransactionContext->SendAnswer(Error_Succeed);
  36. }
  37. virtual void OnPreContinue(CSmartPointer<ITransactionContext> pTransactionContext)
  38. {
  39. pTransactionContext->SendAnswer(Error_Succeed);
  40. }
  41. virtual void OnPreClose(EntityCloseCauseEnum eCloseCause,CSmartPointer<ITransactionContext> pTransactionContext)
  42. {
  43. pTransactionContext->SendAnswer(Error_Succeed);
  44. }
  45. virtual CServerSessionBase* OnNewSession(const char*,const char*)
  46. {
  47. LOG_FUNCTION();
  48. return new HeartBeatServerSession(this);
  49. }
  50. void Instruction(SpReqAnsContext<HeartBeatService_Instruction_Req, HeartBeatService_Instruction_Ans>::Pointer ctx)
  51. {
  52. InstructionEvent *pEvt = new InstructionEvent();
  53. pEvt->ctx = ctx;
  54. m_fsm.PostEventFIFO(pEvt);
  55. }
  56. void CardActive(SpReqAnsContext<HeartBeatService_CardActive_Req, HeartBeatService_CardActive_Ans>::Pointer ctx)
  57. {
  58. CardActiveEvent *pEvt = new CardActiveEvent();
  59. pEvt->ctx = ctx;
  60. m_fsm.PostEventFIFO(pEvt);
  61. }
  62. virtual void OnSysVarEvent(const char *pszKey,
  63. const char *pszValue, const char *pszOldValue, const char *pszEntityName);
  64. virtual void OnSelfTest(EntityTestEnum eTestType,CSmartPointer<ITransactionContext> pTransactionContext)
  65. {
  66. m_fsm.SelfTest(eTestType,pTransactionContext);
  67. }
  68. virtual bool IsService()const{return true;}
  69. virtual bool IsMultiThread()const{return false;}
  70. virtual void OnBroadcastEvent(CUUID SubID, const char *pszEntityName, DWORD dwMessageId, DWORD dwMessageSignature, CAutoBuffer Buffer);
  71. virtual void OnLog(const CAutoArray<CUUID> &SubIDs, const CUUID nLogID, const LogTypeEnum eLogType, const SeverityLevelEnum eLevel,
  72. const DWORD dwSysError, const DWORD dwUserCode, const DWORD dwEntityInstanceID, const WORD wEntityDevelID,
  73. const CAutoArray<DWORD> &Param, const char *pszEntityName, const char *pszModuleName,const char *pszMessage, const linkContext &pLinkInfo);
  74. private:
  75. CHeartBeatFSM m_fsm;
  76. bool m_bConnetedSS;
  77. };
  78. #endif //__MOD_HEARTBEAT_H