mod_PortableScanner.h 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. #ifndef _MOD_PORTABLESCANNER_H__
  2. #define _MOD_PORTABLESCANNER_H__
  3. #pragma once
  4. #include "PortableScannerFSM.h"
  5. using namespace PortableScanner;
  6. class CPortableScannerEntity;
  7. class CPortableScannerServerSession: public PortableScannerService_ServerSessionBase
  8. {
  9. public:
  10. CPortableScannerServerSession(CPortableScannerEntity *pEntity):m_pEntity(pEntity){}
  11. virtual ~CPortableScannerServerSession(){}
  12. virtual void Handle_BindCameraDevice(SpReqAnsContext<PortableScannerService_BindCameraDevice_Req,
  13. PortableScannerService_BindCameraDevice_Ans>::Pointer ctx);
  14. virtual void Handle_DropOffDevice(
  15. SpOnewayCallContext<PortableScannerService_DropOffDevice_Info>::Pointer ctx);
  16. virtual void Handle_StartPreview(SpReqAnsContext<PortableScannerService_StartPreview_Req,
  17. PortableScannerService_StartPreview_Ans>::Pointer ctx);
  18. virtual void Handle_CancelPreview(SpReqAnsContext<PortableScannerService_CancelPreview_Req,
  19. PortableScannerService_CancelPreview_Ans>::Pointer ctx);
  20. virtual void Handle_ScanImage(SpReqAnsContext<PortableScannerService_ScanImage_Req,
  21. PortableScannerService_ScanImage_Ans>::Pointer ctx);
  22. virtual void Handle_ScanImageEx(SpReqAnsContext<PortableScannerService_ScanImageEx_Req,
  23. PortableScannerService_ScanImageEx_Ans>::Pointer ctx);
  24. virtual void Handle_SetProperty(SpReqAnsContext<PortableScannerService_SetProperty_Req,
  25. PortableScannerService_SetProperty_Ans>::Pointer ctx);
  26. virtual void Handle_SetWinPos(SpReqAnsContext<PortableScannerService_SetWinPos_Req,
  27. PortableScannerService_SetWinPos_Ans>::Pointer ctx);
  28. virtual void Handle_ShowProperty(SpReqAnsContext<PortableScannerService_ShowProperty_Req,
  29. PortableScannerService_ShowProperty_Ans>::Pointer ctx);
  30. virtual void Handle_GetDevStatus(SpReqAnsContext<PortableScannerService_GetDevStatus_Req,
  31. PortableScannerService_GetDevStatus_Ans>::Pointer ctx);
  32. virtual void Handle_GetDevInfo(SpReqAnsContext<PortableScannerService_GetDevInfo_Req,
  33. PortableScannerService_GetDevInfo_Ans>::Pointer ctx);
  34. virtual void Handle_Exit(SpOnewayCallContext<PortableScannerService_Exit_Info>::Pointer ctx);
  35. private:
  36. CPortableScannerEntity *m_pEntity;
  37. };
  38. class CPortableScannerEntity : public CEntityBase
  39. {
  40. public:
  41. CPortableScannerEntity() {}
  42. virtual ~CPortableScannerEntity() {}
  43. virtual const char *GetEntityName() const { return "PortableScanner"; }
  44. virtual CServerSessionBase* OnNewSession(const char* , const char * )
  45. {
  46. //LOG_FUNCTION();
  47. return new CPortableScannerServerSession(this);
  48. }
  49. virtual void OnPreStart(CAutoArray<CSimpleStringA> strArgs,
  50. CSmartPointer<ITransactionContext> pTransactionContext)
  51. {
  52. ErrorCodeEnum erroCode = m_fsm.Init(this);
  53. pTransactionContext->SendAnswer(erroCode);
  54. }
  55. virtual void OnPrePause(CSmartPointer<ITransactionContext> pTransactionContext)
  56. {
  57. ErrorCodeEnum ec = Error_Succeed;
  58. ec = m_fsm.UnitTest();
  59. pTransactionContext->SendAnswer(ec);
  60. }
  61. virtual void OnPreContinue(CSmartPointer<ITransactionContext> pTransactionContext)
  62. {
  63. pTransactionContext->SendAnswer(Error_Succeed);
  64. }
  65. virtual void OnPreClose(EntityCloseCauseEnum eCloseCause,
  66. CSmartPointer<ITransactionContext> pTransactionContext)
  67. {
  68. LOG_FUNCTION();
  69. ErrorCodeEnum erroCode = m_fsm.OnExit();
  70. pTransactionContext->SendAnswer(erroCode);
  71. }
  72. void BindDevice(SpReqAnsContext<PortableScannerService_BindCameraDevice_Req,
  73. PortableScannerService_BindCameraDevice_Ans>::Pointer ctx)
  74. {
  75. BindDeviceEvent* pEvent = new BindDeviceEvent();
  76. pEvent->m_ctx = ctx;
  77. m_fsm.PostEventFIFO(pEvent);
  78. }
  79. void DropOffDevice(SpOnewayCallContext<PortableScannerService_DropOffDevice_Info>::Pointer ctx)
  80. {
  81. m_fsm.PostEventFIFO(new FSMEvent(USER_EVT_DROP_OFF_DEVICE));
  82. return;
  83. }
  84. void Preview(SpReqAnsContext<PortableScannerService_StartPreview_Req,
  85. PortableScannerService_StartPreview_Ans>::Pointer ctx)
  86. {
  87. StartPreviewEvent* pEvent = new StartPreviewEvent();
  88. pEvent->m_ctx = ctx;
  89. m_fsm.PostEventFIFO(pEvent);
  90. }
  91. void CancelPreview(SpReqAnsContext<PortableScannerService_CancelPreview_Req,
  92. PortableScannerService_CancelPreview_Ans>::Pointer ctx)
  93. {
  94. StopPreviewEvent* pEvent = new StopPreviewEvent();
  95. pEvent->m_ctx = ctx;
  96. m_fsm.PostEventFIFO(pEvent);
  97. }
  98. void ScanImage(SpReqAnsContext<PortableScannerService_ScanImage_Req,
  99. PortableScannerService_ScanImage_Ans>::Pointer ctx)
  100. {
  101. ScanImageEvent* pEvent = new ScanImageEvent();
  102. pEvent->m_ctx = ctx;
  103. m_fsm.PostEventFIFO(pEvent);
  104. }
  105. void ScanImageEx(SpReqAnsContext<PortableScannerService_ScanImageEx_Req,
  106. PortableScannerService_ScanImageEx_Ans>::Pointer ctx)
  107. {
  108. ScanImageExEvent* pEvent = new ScanImageExEvent();
  109. pEvent->m_ctx = ctx;
  110. m_fsm.PostEventFIFO(pEvent);
  111. }
  112. void Exit(SpOnewayCallContext<PortableScannerService_Exit_Info>::Pointer ctx)
  113. {
  114. LOG_FUNCTION();
  115. m_fsm.PostEventFIFO(new FSMEvent(USER_EVT_EXIT));
  116. }
  117. void GetDevInfo(SpReqAnsContext<PortableScannerService_GetDevInfo_Req,
  118. PortableScannerService_GetDevInfo_Ans>::Pointer ctx)
  119. {
  120. GetDevInfoEvent* pEvent = new GetDevInfoEvent();
  121. pEvent->m_ctx = ctx;
  122. m_fsm.PostEventFIFO(pEvent);
  123. }
  124. void GetDevStatus(SpReqAnsContext<PortableScannerService_GetDevStatus_Req,
  125. PortableScannerService_GetDevStatus_Ans>::Pointer ctx)
  126. {
  127. GetDevStatusEvent* pEvent = new GetDevStatusEvent();
  128. pEvent->m_ctx = ctx;
  129. m_fsm.PostEventFIFO(pEvent);
  130. }
  131. void SetWinPos(SpReqAnsContext<PortableScannerService_SetWinPos_Req,
  132. PortableScannerService_SetWinPos_Ans>::Pointer ctx)
  133. {
  134. SetWinPosEvent* pEvent = new SetWinPosEvent();
  135. pEvent->m_ctx = ctx;
  136. m_fsm.PostEventFIFO(pEvent);
  137. }
  138. void ShowProperty(SpReqAnsContext<PortableScannerService_ShowProperty_Req,
  139. PortableScannerService_ShowProperty_Ans>::Pointer ctx)
  140. {
  141. ShowPropertyEvent* pEvent = new ShowPropertyEvent();
  142. pEvent->m_ctx = ctx;
  143. m_fsm.PostEventFIFO(pEvent);
  144. }
  145. void SetProperty(SpReqAnsContext<PortableScannerService_SetProperty_Req,
  146. PortableScannerService_SetProperty_Ans>::Pointer ctx)
  147. {
  148. SetPropertyEvent* pEvent = new SetPropertyEvent();
  149. pEvent->m_ctx = ctx;
  150. m_fsm.PostEventFIFO(pEvent);
  151. }
  152. void OnSelfTest(EntityTestEnum eTestType, CSmartPointer<ITransactionContext> pTransactionContext)
  153. {
  154. m_fsm.SelfTest(eTestType, pTransactionContext);
  155. }
  156. virtual bool IsService() const { return true; }
  157. virtual bool IsMultiThread() const { return true; };
  158. private:
  159. CPortableScannerFSM m_fsm;
  160. };
  161. #endif