mod_RemoteController.cpp 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include "SpBase.h"
  2. #include "Event.h"
  3. #include "RemoteControllerFSM.h"
  4. // Ô¶³Ì¿ØÖÆ 0x504
  5. class CRemoteControllerEntity;
  6. //class PinPadClass;
  7. class CRemoteControllerEntity : public CEntityBase, public ILogListener
  8. {
  9. public:
  10. CRemoteControllerEntity() { }
  11. virtual ~CRemoteControllerEntity() {}
  12. virtual const char *GetEntityName() const { return "RemoteController"; }
  13. virtual bool IsService()const{return true;}
  14. virtual void OnStarted()
  15. {
  16. m_FSM.Init(this);
  17. // subscribe heartbeat entity event for create remote control channel
  18. GetFunction()->SubscribeLog(m_LogSubID, this, Log_Event, Severity_None, Error_IgnoreAll, EVENT_START_REMOTE_CONTROL, "HeartBeat", true);
  19. }
  20. virtual void OnPreClose(EntityCloseCauseEnum eCloseCause,CSmartPointer<ITransactionContext> pTransactionContext)
  21. {
  22. m_FSM.PostExitEvent();
  23. GetFunction()->UnsubscribeLog(m_LogSubID);
  24. pTransactionContext->SendAnswer(Error_Succeed);
  25. }
  26. virtual void OnLog(const CAutoArray<CUUID> &SubIDs, const CUUID nLogID,const LogTypeEnum eLogType, const SeverityLevelEnum eLevel,
  27. const DWORD dwSysError,const DWORD dwUserCode,const DWORD dwEntityInstanceID, const WORD wEntityDevelID,
  28. const CAutoArray<DWORD> &Param, const char *pszEntityName, const char *pszModuleName,const char *pszMessage)
  29. {
  30. Dbg("recv log event: %d", dwUserCode);
  31. if (dwUserCode == EVENT_START_REMOTE_CONTROL)
  32. {
  33. if (m_FSM.GetCurrStateName() != "None")
  34. {
  35. Dbg("already in remote control mode, terminate it now");
  36. m_FSM.PostEventFIFO(new FSMEvent(CRemoteControllerFSM::Event_ReleaseChannel));
  37. }
  38. Dbg("trigger event Event_CreateChannel");
  39. m_FSM.PostEventFIFO(new FSMEvent(CRemoteControllerFSM::Event_CreateChannel));
  40. }
  41. }
  42. protected:
  43. CUUID m_LogSubID;
  44. CRemoteControllerFSM m_FSM;
  45. };
  46. SP_BEGIN_ENTITY_MAP()
  47. SP_ENTITY(CRemoteControllerEntity)
  48. SP_END_ENTITY_MAP()