mod_HSPScanner.h 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. #ifndef _MOD_HSPSCANNER_H_
  2. #define _MOD_HSPSCANNER_H_
  3. #pragma once
  4. #include "HSPScannerFSM.h"
  5. using namespace HSPScanner;
  6. class CHSPScannerEntity;
  7. class CHSPScannerServerSession: public HSPScannerService_ServerSessionBase
  8. {
  9. public:
  10. CHSPScannerServerSession(CHSPScannerEntity *pEntity):m_pEntity(pEntity){}
  11. virtual ~CHSPScannerServerSession(){}
  12. virtual void Handle_StartPreview(SpReqAnsContext<HSPScannerService_StartPreview_Req,
  13. HSPScannerService_StartPreview_Ans>::Pointer ctx);
  14. virtual void Handle_CancelPreview(SpReqAnsContext<HSPScannerService_CancelPreview_Req,
  15. HSPScannerService_CancelPreview_Ans>::Pointer ctx);
  16. virtual void Handle_ScanImage(SpReqAnsContext<HSPScannerService_ScanImage_Req,
  17. HSPScannerService_ScanImage_Ans>::Pointer ctx);
  18. virtual void Handle_ScanImageEx(SpReqAnsContext<HSPScannerService_ScanImageEx_Req,
  19. HSPScannerService_ScanImageEx_Ans>::Pointer ctx);
  20. virtual void Handle_SetProperty(SpReqAnsContext<HSPScannerService_SetProperty_Req,
  21. HSPScannerService_SetProperty_Ans>::Pointer ctx);
  22. virtual void Handle_SetWinPos(SpReqAnsContext<HSPScannerService_SetWinPos_Req,
  23. HSPScannerService_SetWinPos_Ans>::Pointer ctx);
  24. virtual void Handle_ShowProperty(SpReqAnsContext<HSPScannerService_ShowProperty_Req,
  25. HSPScannerService_ShowProperty_Ans>::Pointer ctx);
  26. virtual void Handle_GetDevStatus(SpReqAnsContext<HSPScannerService_GetDevStatus_Req,
  27. HSPScannerService_GetDevStatus_Ans>::Pointer ctx);
  28. virtual void Handle_GetDevInfo(SpReqAnsContext<HSPScannerService_GetDevInfo_Req,
  29. HSPScannerService_GetDevInfo_Ans>::Pointer ctx);
  30. virtual void Handle_Exit(SpOnewayCallContext<HSPScannerService_Exit_Info>::Pointer ctx);
  31. private:
  32. CHSPScannerEntity *m_pEntity;
  33. };
  34. class CHSPScannerEntity : public CEntityBase
  35. {
  36. public:
  37. CHSPScannerEntity() {}
  38. virtual ~CHSPScannerEntity() {}
  39. virtual const char *GetEntityName() const { return "HSPScanner"; }
  40. virtual CServerSessionBase* OnNewSession(const char* , const char * )
  41. {
  42. //LOG_FUNCTION();
  43. return new CHSPScannerServerSession(this);
  44. }
  45. virtual void OnPreStart(CAutoArray<CSimpleStringA> strArgs,
  46. CSmartPointer<ITransactionContext> pTransactionContext)
  47. {
  48. ErrorCodeEnum erroCode = m_fsm.Init(this);
  49. pTransactionContext->SendAnswer(erroCode);
  50. }
  51. virtual void OnPrePause(CSmartPointer<ITransactionContext> pTransactionContext)
  52. {
  53. pTransactionContext->SendAnswer(Error_Succeed);
  54. }
  55. virtual void OnPreContinue(CSmartPointer<ITransactionContext> pTransactionContext)
  56. {
  57. pTransactionContext->SendAnswer(Error_Succeed);
  58. }
  59. virtual void OnPreClose(EntityCloseCauseEnum eCloseCause,
  60. CSmartPointer<ITransactionContext> pTransactionContext)
  61. {
  62. LOG_FUNCTION();
  63. ErrorCodeEnum erroCode = m_fsm.OnExit();
  64. pTransactionContext->SendAnswer(erroCode);
  65. }
  66. void Preview(SpReqAnsContext<HSPScannerService_StartPreview_Req,
  67. HSPScannerService_StartPreview_Ans>::Pointer ctx)
  68. {
  69. StartPreviewEvent* pEvent = new StartPreviewEvent();
  70. pEvent->m_ctx = ctx;
  71. m_fsm.PostEventFIFO(pEvent);
  72. }
  73. void CancelPreview(SpReqAnsContext<HSPScannerService_CancelPreview_Req,
  74. HSPScannerService_CancelPreview_Ans>::Pointer ctx)
  75. {
  76. StopPreviewEvent* pEvent = new StopPreviewEvent();
  77. pEvent->m_ctx = ctx;
  78. m_fsm.PostEventFIFO(pEvent);
  79. }
  80. void ScanImage(SpReqAnsContext<HSPScannerService_ScanImage_Req,
  81. HSPScannerService_ScanImage_Ans>::Pointer ctx)
  82. {
  83. ScanImageEvent* pEvent = new ScanImageEvent();
  84. pEvent->m_ctx = ctx;
  85. m_fsm.PostEventFIFO(pEvent);
  86. }
  87. void ScanImageEx(SpReqAnsContext<HSPScannerService_ScanImageEx_Req,
  88. HSPScannerService_ScanImageEx_Ans>::Pointer ctx)
  89. {
  90. ScanImageExEvent* pEvent = new ScanImageExEvent();
  91. pEvent->m_ctx = ctx;
  92. m_fsm.PostEventFIFO(pEvent);
  93. }
  94. void Exit(SpOnewayCallContext<HSPScannerService_Exit_Info>::Pointer ctx)
  95. {
  96. LOG_FUNCTION();
  97. m_fsm.PostEventFIFO(new FSMEvent(USER_EVT_EXIT));
  98. //ErrorCodeEnum erroCode = m_fsm.OnDevExit();
  99. }
  100. void GetDevInfo(SpReqAnsContext<HSPScannerService_GetDevInfo_Req,
  101. HSPScannerService_GetDevInfo_Ans>::Pointer ctx)
  102. {
  103. //if(!m_fsm.IsDevFurnished()) {
  104. // Dbg("Josephus@note: no furnish yet");
  105. // ctx->Ans.model = "";
  106. // ctx->Ans.state = DEVICE_STATUS_NOCFG;
  107. // ctx->Ans.type = "";
  108. // ctx->Ans.version = "";
  109. // ctx->Answer(Error_Succeed);
  110. //}
  111. //else {
  112. // m_fsm.GetDevInfo(ctx);
  113. //}
  114. //return;
  115. GetDevInfoEvent* pEvent = new GetDevInfoEvent();
  116. pEvent->m_ctx = ctx;
  117. m_fsm.PostEventFIFO(pEvent);
  118. }
  119. void GetDevStatus(SpReqAnsContext<HSPScannerService_GetDevStatus_Req,
  120. HSPScannerService_GetDevStatus_Ans>::Pointer ctx)
  121. {
  122. //m_fsm.GetDevStatus(ctx);
  123. //return;
  124. GetDevStatusEvent* pEvent = new GetDevStatusEvent();
  125. pEvent->m_ctx = ctx;
  126. m_fsm.PostEventFIFO(pEvent);
  127. }
  128. void SetWinPos(SpReqAnsContext<HSPScannerService_SetWinPos_Req,
  129. HSPScannerService_SetWinPos_Ans>::Pointer ctx)
  130. {
  131. SetWinPosEvent* pEvent = new SetWinPosEvent();
  132. pEvent->m_ctx = ctx;
  133. m_fsm.PostEventFIFO(pEvent);
  134. }
  135. void ShowProperty(SpReqAnsContext<HSPScannerService_ShowProperty_Req,
  136. HSPScannerService_ShowProperty_Ans>::Pointer ctx)
  137. {
  138. ShowPropertyEvent* pEvent = new ShowPropertyEvent();
  139. pEvent->m_ctx = ctx;
  140. m_fsm.PostEventFIFO(pEvent);
  141. }
  142. void SetProperty(SpReqAnsContext<HSPScannerService_SetProperty_Req,
  143. HSPScannerService_SetProperty_Ans>::Pointer ctx)
  144. {
  145. SetPropertyEvent* pEvent = new SetPropertyEvent();
  146. pEvent->m_ctx = ctx;
  147. m_fsm.PostEventFIFO(pEvent);
  148. }
  149. void OnSelfTest(EntityTestEnum eTestType, CSmartPointer<ITransactionContext> pTransactionContext)
  150. {
  151. m_fsm.SelfTest(eTestType, pTransactionContext);
  152. }
  153. virtual bool IsService() const { return true; }
  154. virtual bool IsMultiThread() const { return true; };
  155. private:
  156. CHSPScannerFSM m_fsm;
  157. };
  158. #endif