mod_CustMngrAuth.cpp 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. #pragma once
  2. #include "SpBase.h"
  3. #include "mod_CustMngrAuth.h"
  4. CCustMngrAuthEntity::CCustMngrAuthEntity()
  5. {
  6. }
  7. void CCustMngrAuthEntity::OnPreStart(CAutoArray<CSimpleStringA> strArgs, CSmartPointer<ITransactionContext> pTransactionContext)
  8. {
  9. LOG_FUNCTION();
  10. ErrorCodeEnum eErr = __OnStart(Error_Succeed);
  11. pTransactionContext->SendAnswer(eErr);
  12. }
  13. ErrorCodeEnum CCustMngrAuthEntity::__OnStart(ErrorCodeEnum preOperationError)
  14. {
  15. LOG_FUNCTION();
  16. if (preOperationError != Error_Succeed)
  17. return preOperationError;
  18. ErrorCodeEnum eStart = m_fsm.Init(this);
  19. if (eStart == Error_Succeed)
  20. {
  21. //订阅授权实体广播
  22. /*GetFunction()->SubscribeBroadcast("FaceRecognition", "", this, m_uuidFRMsg);
  23. GetFunction()->SubscribeBroadcast("MaintainWatcher", "", this, m_uuidUkMsg);*/
  24. /*CSmartPointer<IEntityFunction> spFunction = GetFunction();
  25. ErrorCodeEnum eSub;
  26. eSub = spFunction->SubscribeBroadcast("MaintainWatcher", NULL, this, m_uuidUkMsg);
  27. if (eSub != Error_Succeed)
  28. {
  29. Dbg("subscribe MaintainWatcher broadcast failed");
  30. }
  31. else
  32. {
  33. Dbg("subscribe MaintainWatcher broadcast succeed");
  34. }*/
  35. }
  36. else
  37. {
  38. Dbg("m_fsm.Init failed");
  39. }
  40. return eStart;
  41. }
  42. void CCustMngrAuthEntity::OnPreClose(EntityCloseCauseEnum eCloseCause, CSmartPointer<ITransactionContext> pTransactionContext)
  43. {
  44. LOG_FUNCTION();
  45. ErrorCodeEnum Error = __OnClose(Error_Succeed);
  46. pTransactionContext->SendAnswer(Error);
  47. }
  48. ErrorCodeEnum CCustMngrAuthEntity::__OnClose(ErrorCodeEnum preOperationError)
  49. {
  50. LOG_FUNCTION();
  51. if (preOperationError != Error_Succeed)
  52. return preOperationError;
  53. return Error_Succeed;
  54. }
  55. void CCustMngrAuthEntity::OnPrePause(CSmartPointer<ITransactionContext> pTransactionContext)
  56. {
  57. LOG_FUNCTION();
  58. pTransactionContext->SendAnswer(Error_Succeed);
  59. }
  60. void CCustMngrAuthEntity::OnContinued()
  61. {
  62. LOG_FUNCTION();
  63. }
  64. void CCustMngrAuthEntity::OnBroadcastEvent(CUUID SubID, const char *pszEntityName, DWORD dwMessageId, DWORD dwMessageSignature, CAutoBuffer Buffer)
  65. {
  66. if (dwMessageSignature != eMsgSig_UkeyInsert)
  67. return;
  68. LOG_FUNCTION();
  69. Dbg("(ON BROADCASTEVENT) msg:%s,%d,%d",pszEntityName,dwMessageId,dwMessageSignature);
  70. if (_strnicmp(pszEntityName, "MaintainWatcher", strlen("MaintainWatcher")) == 0)
  71. {
  72. if (dwMessageSignature == eMsgSig_UkeyInsert)
  73. {
  74. MaintainWatcher::UkeyInsert ui;
  75. SpBuffer2Object(Buffer, ui);
  76. if (!ui.UkeyID.IsNullOrEmpty() && strlen(ui.UkeyID)!=0)
  77. {
  78. Dbg("receive ukeyinsert event: UkeyID is %s", ui.UkeyID);
  79. //先发消息再转状态,因为给前端发消息也属于工作中。
  80. if (m_fsm.GetCurrStateName() == "Authorizing" && m_fsm.m_ctx != NULL)//授权中收到ukey,通过授权
  81. {
  82. m_fsm.m_authCtx.UkeyID = ui.UkeyID;
  83. m_fsm.m_authCtx.eAuthByWhich = AuthByUkey;
  84. AuthorizeFinishedEvent* e = new AuthorizeFinishedEvent();
  85. e->ctx = m_fsm.m_ctx;
  86. e->param1 = Error_Succeed;
  87. m_fsm.PostEventFIFO(e);
  88. Dbg("############## Authorized By Ukey ##############");
  89. }
  90. else
  91. {
  92. Dbg("ERROR: unexpected fsm state!");
  93. }
  94. }
  95. else
  96. {
  97. Dbg("unexpected: message UkeyInsert.UkeyID is NULL or empty");
  98. }
  99. }
  100. }
  101. }
  102. CServerSessionBase* CCustMngrAuthEntity::OnNewSession(const char*,const char*)
  103. {
  104. Dbg("A new connecting request arrived.");
  105. m_bNewSessionInit = true;
  106. return new CustMngrAuthServerSession(this);
  107. }
  108. void CCustMngrAuthEntity::OnTimeout(DWORD dwTimerID)
  109. {
  110. switch(dwTimerID)
  111. {
  112. case 1:
  113. {
  114. }
  115. break;
  116. default:
  117. break;
  118. }
  119. }
  120. void CCustMngrAuthEntity::StartAuthorize(SpReqAnsContext<CustMngrAuthService_StartAuthorize_Req, CustMngrAuthService_StartAuthorize_Ans>::Pointer ctx)
  121. {
  122. LOG_FUNCTION();
  123. if (m_fsm.m_ctx == NULL) m_fsm.m_ctx = ctx;
  124. AuthorizeStartEvent* e = new AuthorizeStartEvent();
  125. e->ctx = ctx;
  126. m_fsm.PostEventFIFO(e);
  127. }
  128. void CCustMngrAuthEntity::StopAuthorize(SpReqAnsContext<CustMngrAuthService_StopAuthorize_Req, CustMngrAuthService_StopAuthorize_Ans>::Pointer ctx)
  129. {
  130. LOG_FUNCTION();
  131. AuthorizeCancelEvent *e = new AuthorizeCancelEvent();
  132. m_fsm.PostEventFIFO(e);
  133. }
  134. void CCustMngrAuthEntity::CollectFingerPrint(SpReqAnsContext<CustMngrAuthService_CollectFingerPrint_Req, CustMngrAuthService_CollectFingerPrint_Ans>::Pointer ctx)
  135. {
  136. LOG_FUNCTION();
  137. CollectFingerPrintStartEvent *pEvt = new CollectFingerPrintStartEvent();
  138. pEvt->ctx = ctx;
  139. m_fsm.PostEventFIFO(pEvt);
  140. }
  141. void CCustMngrAuthEntity::StopCollect(SpReqAnsContext<CustMngrAuthService_StopCollect_Req, CustMngrAuthService_StopCollect_Ans>::Pointer ctx)
  142. {
  143. LOG_FUNCTION();
  144. CancelCollectFingerPrintEvent *pEvt = new CancelCollectFingerPrintEvent();
  145. m_fsm.PostEventFIFO(pEvt);
  146. }
  147. void CCustMngrAuthEntity::SaveFingerPrint(SpReqAnsContext<CustMngrAuthService_SaveFingerPrint_Req, CustMngrAuthService_SaveFingerPrint_Ans>::Pointer ctx)
  148. {
  149. LOG_FUNCTION();
  150. SaveFingerPrintStartEvent *pEvt = new SaveFingerPrintStartEvent();
  151. pEvt->ctx = ctx;
  152. m_fsm.PostEventFIFO(pEvt);
  153. }
  154. void CCustMngrAuthEntity::CheckUkey(SpReqAnsContext<CustMngrAuthService_CheckUkey_Req, CustMngrAuthService_CheckUkey_Ans>::Pointer ctx)
  155. {
  156. LOG_FUNCTION();
  157. CheckUkeyEvent *pEvt = new CheckUkeyEvent();
  158. m_fsm.PostEventFIFO(pEvt);
  159. }
  160. void CCustMngrAuthEntity::HoldOn(SpReqAnsContext<CustMngrAuthService_HoldOn_Req, CustMngrAuthService_HoldOn_Ans>::Pointer ctx)
  161. {
  162. LOG_FUNCTION();
  163. HoldOnEvent *pEvt = new HoldOnEvent();
  164. pEvt->ctx = ctx;
  165. m_fsm.PostEventFIFO(pEvt);
  166. }
  167. //对业务接口
  168. void CustMngrAuthServerSession::Handle_StartAuthorize(SpReqAnsContext<CustMngrAuthService_StartAuthorize_Req, CustMngrAuthService_StartAuthorize_Ans>::Pointer ctx)
  169. {
  170. LOG_FUNCTION();
  171. Dbg("handle_authorize.");
  172. m_pEntity->StartAuthorize(ctx);
  173. }
  174. void CustMngrAuthServerSession::Handle_StopAuthorize(SpReqAnsContext<CustMngrAuthService_StopAuthorize_Req, CustMngrAuthService_StopAuthorize_Ans>::Pointer ctx)
  175. {
  176. LOG_FUNCTION();
  177. m_pEntity->StopAuthorize(ctx);
  178. }
  179. void CustMngrAuthServerSession::Handle_CollectFingerPrint(SpReqAnsContext<CustMngrAuthService_CollectFingerPrint_Req, CustMngrAuthService_CollectFingerPrint_Ans>::Pointer ctx)
  180. {
  181. LOG_FUNCTION();
  182. m_pEntity->CollectFingerPrint(ctx);
  183. }
  184. void CustMngrAuthServerSession::Handle_StopCollect(SpReqAnsContext<CustMngrAuthService_StopCollect_Req, CustMngrAuthService_StopCollect_Ans>::Pointer ctx)
  185. {
  186. LOG_FUNCTION();
  187. m_pEntity->StopCollect(ctx);
  188. }
  189. void CustMngrAuthServerSession::Handle_SaveFingerPrint(SpReqAnsContext<CustMngrAuthService_SaveFingerPrint_Req, CustMngrAuthService_SaveFingerPrint_Ans>::Pointer ctx)
  190. {
  191. LOG_FUNCTION();
  192. m_pEntity->SaveFingerPrint(ctx);
  193. }
  194. void CustMngrAuthServerSession::Handle_CheckUkey(SpReqAnsContext<CustMngrAuthService_CheckUkey_Req, CustMngrAuthService_CheckUkey_Ans>::Pointer ctx)
  195. {
  196. LOG_FUNCTION();
  197. m_pEntity->CheckUkey(ctx);
  198. }
  199. void CustMngrAuthServerSession::Handle_HoldOn(SpReqAnsContext<CustMngrAuthService_HoldOn_Req, CustMngrAuthService_HoldOn_Ans>::Pointer ctx)
  200. {
  201. LOG_FUNCTION();
  202. m_pEntity->HoldOn(ctx);
  203. }
  204. SP_BEGIN_ENTITY_MAP()
  205. SP_ENTITY(CCustMngrAuthEntity)
  206. SP_END_ENTITY_MAP()