mod_vtmloader.h 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. #pragma once
  2. #include "SpBase.h"
  3. #include "VtmLoaderFSM.h"
  4. //#include "IHttpFunc.h"
  5. #include "VtmLoader_server_g.h"
  6. using namespace VtmLoader;
  7. class CVtmLoaderEntity;
  8. class VtmLoaderServerSession : public VtmLoaderService_ServerSessionBase
  9. {
  10. public:
  11. VtmLoaderServerSession(CVtmLoaderEntity* pEntity) :m_pEntity(pEntity) {}
  12. virtual ~VtmLoaderServerSession() {}
  13. virtual void Handle_SetTerminalNo(SpReqAnsContext<VtmLoaderService_SetTerminalNo_Req, VtmLoaderService_SetTerminalNo_Ans>::Pointer ctx);
  14. virtual void Handle_NoticeAppReady(SpReqAnsContext<VtmLoaderService_NoticeAppReady_Req, VtmLoaderService_NoticeAppReady_Ans>::Pointer ctx);
  15. virtual void Handle_CheckDeviceEntity(SpReqAnsContext<VtmLoaderService_CheckDeviceEntity_Req, VtmLoaderService_CheckDeviceEntity_Ans>::Pointer ctx);
  16. virtual void Handle_SaveTerminalNo(SpReqAnsContext<VtmLoaderService_SaveTerminalNo_Req, VtmLoaderService_SaveTerminalNo_Ans>::Pointer ctx);
  17. virtual void Handle_DealWithOldEvent(SpReqAnsContext<VtmLoaderService_DealWithOldEvent_Req, VtmLoaderService_DealWithOldEvent_Ans>::Pointer ctx);
  18. virtual void Handle_QueryLocalInfo(SpReqAnsContext<VtmLoaderService_QueryLocalInfo_Req, VtmLoaderService_QueryLocalInfo_Ans>::Pointer ctx);
  19. private:
  20. CVtmLoaderEntity* m_pEntity;
  21. };
  22. DWORD thread_testEvent(LPVOID param)
  23. {
  24. while (true)
  25. {
  26. //LogEvent(SeverityLevelEnum::Severity_Middle, 0x10f00101, "for test event");
  27. //LogWarn(SeverityLevelEnum::Severity_Middle, ErrorCodeEnum::Error_BlockTimeOut, 0x10f00102, "for test Warn");
  28. LogError(SeverityLevelEnum::Severity_Middle, ErrorCodeEnum::Error_BlockTimeOut, 0x10f00103, "for test Error");
  29. Sleep(500);
  30. }
  31. return 0;
  32. }
  33. class CVtmLoaderEntity : public CEntityBase, public ILogListener, public IEntityStateListener
  34. {
  35. public:
  36. CVtmLoaderEntity() :m_SubLogID1(0), m_SubLogID2(0), m_dwBeginTime(0),
  37. m_strUserID(""), m_strUserName(""), m_strAuthorizer(""), m_strCurRight(""), m_strAuthTime(""), m_bSubsribeMedia(false)
  38. {
  39. }
  40. virtual ~CVtmLoaderEntity() {}
  41. virtual const char *GetEntityName() const { return "VtmLoader"; }
  42. virtual bool IsService()const{return true;}
  43. virtual void OnPreStart(CAutoArray<CSimpleStringA> strArgs,CSmartPointer<ITransactionContext> pTransactionContext);
  44. virtual void OnPreClose(EntityCloseCauseEnum eCloseCause,CSmartPointer<ITransactionContext> pTransactionContext) ;
  45. virtual CServerSessionBase *OnNewSession(const char* /*pszRemoteEntityName*/, const char * /*pszParam*/)
  46. {
  47. return new VtmLoaderServerSession(this);
  48. }
  49. virtual void OnLog(const CAutoArray<CUUID> &SubIDs, const CUUID nLogID,const LogTypeEnum eLogType, const SeverityLevelEnum eLevel,
  50. const DWORD dwSysError,const DWORD dwUserCode,const DWORD dwEntityInstanceID, const WORD wEntityDevelID,
  51. const CAutoArray<DWORD> &Param, const char *pszEntityName, const char *pszModuleName,const char *pszMessage, const linkContext &pLinkInfo);
  52. CSimpleStringA GetCurMaintainer(){ return m_strUserID;}
  53. void SetTerminalNo(SpReqAnsContext<VtmLoaderService_SetTerminalNo_Req, VtmLoaderService_SetTerminalNo_Ans>::Pointer ctx) { m_FSM.SetTerminalNo(ctx); }
  54. //void NoticeAppReady(SpReqAnsContext<VtmLoaderService_NoticeAppReady_Req, VtmLoaderService_NoticeAppReady_Ans>::Pointer ctx);
  55. void CheckDeviceEntity(SpReqAnsContext<VtmLoaderService_CheckDeviceEntity_Req, VtmLoaderService_CheckDeviceEntity_Ans>::Pointer ctx)
  56. {
  57. if (!m_bSubsribeMedia)
  58. {
  59. GetFunction()->SubscribeLog(m_uuidMediaController, this, Log_Event, Severity_Middle, Error_IgnoreAll, -1, "MediaController");
  60. m_bSubsribeMedia = true;
  61. }
  62. CheckDeviceEntityEvent* pEvt = new CheckDeviceEntityEvent();
  63. pEvt->ctx = ctx;
  64. m_FSM.PostEventFIFO(pEvt);
  65. }
  66. void SaveTerminalNo(SpReqAnsContext<VtmLoaderService_SaveTerminalNo_Req, VtmLoaderService_SaveTerminalNo_Ans>::Pointer ctx)
  67. {
  68. SaveTerminalNoEvent* pEvt = new SaveTerminalNoEvent();
  69. pEvt->ctx = ctx;
  70. m_FSM.PostEventFIFO(pEvt);
  71. }
  72. void DealWithOldEvent(SpReqAnsContext<VtmLoaderService_DealWithOldEvent_Req, VtmLoaderService_DealWithOldEvent_Ans>::Pointer ctx);
  73. void QueryLocalInfo(SpReqAnsContext<VtmLoaderService_QueryLocalInfo_Req, VtmLoaderService_QueryLocalInfo_Ans>::Pointer ctx)
  74. {
  75. QueryLocalInfoEvent* pEvt = new QueryLocalInfoEvent();
  76. pEvt->ctx = ctx;
  77. m_FSM.PostEventFIFO(pEvt);
  78. }
  79. virtual void OnEntityStateHook(const char* pszEntityName, const char* pszTriggerEntity, EntityStateEnum eState, EntityStateEnum eLastState);
  80. virtual void OnUserStateHook(const char* pszEntityName, DWORD dwState, DWORD dwLastState) { return; }
  81. virtual void OnCeateConnection(const char* pszCallerEntity, const char* pszServiceEntity) { return; }
  82. virtual void OnCloseConnection(const char* pszCallerEntity, const char* pszServiceEntity) { return; }
  83. void EntityLostProc(CSimpleStringA entityName);
  84. void SetVideoEntityOK() { m_FSM.SetVideoEntityOK(); }
  85. protected:
  86. //GUITask m_task;
  87. CVtmLoaderFSM m_FSM;
  88. CUUID m_SubLogID1;
  89. CUUID m_SubLogID2;
  90. CUUID m_SubLogID3;
  91. CUUID m_SubLogID4;
  92. CUUID m_uuidMediaController;
  93. // 当前维护用户信息
  94. CSimpleStringA m_strUserID;
  95. CSimpleStringA m_strUserName;
  96. CSimpleStringA m_strCurRight;
  97. CSimpleStringA m_strAuthorizer;
  98. CSimpleStringA m_strAuthTime;
  99. DWORD m_dwBeginTime;
  100. bool m_bSubsribeMedia;
  101. public:
  102. //static std::string m_httpToken;
  103. //IHttpFunc* m_pHttpFunc;
  104. };
  105. struct EntityLostProcTask : public ITaskSp
  106. {
  107. CVtmLoaderEntity* pEntity;
  108. CSimpleStringA entityName;
  109. EntityLostProcTask(CVtmLoaderEntity* entity, CSimpleStringA entityName) : pEntity(entity), entityName(entityName) {}
  110. void Process()
  111. {
  112. pEntity->EntityLostProc(entityName);
  113. }
  114. };