mod_vtmloader.h 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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. private:
  19. CVtmLoaderEntity* m_pEntity;
  20. };
  21. DWORD thread_testEvent(LPVOID param)
  22. {
  23. while (true)
  24. {
  25. //LogEvent(SeverityLevelEnum::Severity_Middle, 0x10f00101, "for test event");
  26. //LogWarn(SeverityLevelEnum::Severity_Middle, ErrorCodeEnum::Error_BlockTimeOut, 0x10f00102, "for test Warn");
  27. LogError(SeverityLevelEnum::Severity_Middle, ErrorCodeEnum::Error_BlockTimeOut, 0x10f00103, "for test Error");
  28. Sleep(500);
  29. }
  30. return 0;
  31. }
  32. class CVtmLoaderEntity : public CEntityBase, public ILogListener, public IEntityStateListener
  33. {
  34. public:
  35. CVtmLoaderEntity() :m_SubLogID1(0), m_SubLogID2(0), m_dwBeginTime(0),
  36. m_strUserID(""), m_strUserName(""), m_strAuthorizer(""), m_strCurRight(""), m_strAuthTime(""), m_bSubsribeMedia(false)
  37. {
  38. }
  39. virtual ~CVtmLoaderEntity() {}
  40. virtual const char *GetEntityName() const { return "VtmLoader"; }
  41. virtual bool IsService()const{return true;}
  42. virtual void OnPreStart(CAutoArray<CSimpleStringA> strArgs,CSmartPointer<ITransactionContext> pTransactionContext);
  43. virtual void OnPreClose(EntityCloseCauseEnum eCloseCause,CSmartPointer<ITransactionContext> pTransactionContext) ;
  44. virtual CServerSessionBase *OnNewSession(const char* /*pszRemoteEntityName*/, const char * /*pszParam*/)
  45. {
  46. return new VtmLoaderServerSession(this);
  47. }
  48. virtual void OnLog(const CAutoArray<CUUID> &SubIDs, const CUUID nLogID,const LogTypeEnum eLogType, const SeverityLevelEnum eLevel,
  49. const DWORD dwSysError,const DWORD dwUserCode,const DWORD dwEntityInstanceID, const WORD wEntityDevelID,
  50. const CAutoArray<DWORD> &Param, const char *pszEntityName, const char *pszModuleName,const char *pszMessage, const linkContext &pLinkInfo);
  51. ErrorCodeEnum UnsubscribeEntitysEvents();
  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. virtual void OnEntityStateHook(const char* pszEntityName, const char* pszTriggerEntity, EntityStateEnum eState, EntityStateEnum eLastState);
  74. virtual void OnUserStateHook(const char* pszEntityName, DWORD dwState, DWORD dwLastState) { return; }
  75. virtual void OnCeateConnection(const char* pszCallerEntity, const char* pszServiceEntity) { return; }
  76. virtual void OnCloseConnection(const char* pszCallerEntity, const char* pszServiceEntity) { return; }
  77. void EntityLostProc(CSimpleStringA entityName);
  78. void SetVideoEntityOK() { m_FSM.SetVideoEntityOK(); }
  79. protected:
  80. //GUITask m_task;
  81. CVtmLoaderFSM m_FSM;
  82. CUUID m_SubLogID1;
  83. CUUID m_SubLogID2;
  84. CUUID m_SubLogID3;
  85. CUUID m_SubLogID4;
  86. CUUID m_uuidMediaController;
  87. // 当前维护用户信息
  88. CSimpleStringA m_strUserID;
  89. CSimpleStringA m_strUserName;
  90. CSimpleStringA m_strCurRight;
  91. CSimpleStringA m_strAuthorizer;
  92. CSimpleStringA m_strAuthTime;
  93. DWORD m_dwBeginTime;
  94. bool m_bSubsribeMedia;
  95. public:
  96. //static std::string m_httpToken;
  97. //IHttpFunc* m_pHttpFunc;
  98. };
  99. struct EntityLostProcTask : public ITaskSp
  100. {
  101. CVtmLoaderEntity* pEntity;
  102. CSimpleStringA entityName;
  103. EntityLostProcTask(CVtmLoaderEntity* entity, CSimpleStringA entityName) : pEntity(entity), entityName(entityName) {}
  104. void Process()
  105. {
  106. pEntity->EntityLostProc(entityName);
  107. }
  108. };