mod_IDCertificate.h 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. #ifndef MOD_IDCERTIFICATE_H
  2. #define MOD_IDCERTIFICATE_H
  3. #ifdef RVC_OS_LINUX
  4. #include "SpTest.h"
  5. #endif
  6. #include "modVer.h"
  7. #include "IDCertFSM.h"
  8. #include "IDCertificate_server_g.h"
  9. #include "IDCertificate_UserErrorCode.h"
  10. class CIDCertEntity;
  11. class IDCertServerSession : public IDCertificate::IDCertService_ServerSessionBase
  12. {
  13. public:
  14. IDCertServerSession(CIDCertEntity* pEntity) : m_pEntity(pEntity){}
  15. virtual ~IDCertServerSession(){}
  16. virtual void Handle_CancelRead(SpOnewayCallContext<IDCert_CancelRead_Info>::Pointer ctx);
  17. virtual void Handle_CancelReadJS(SpReqAnsContext<IDCert_CancelReadJS_Req, IDCert_CancelReadJS_Ans>::Pointer ctx);
  18. virtual void Handle_Exit(SpOnewayCallContext<IDCert_Exit_Info>::Pointer ctx);
  19. virtual void Handle_GetDevInfo(SpReqAnsContext<IDCert_GetDevInfo_Req, IDCert_GetDevInfo_Ans>::Pointer ctx);
  20. virtual void Handle_ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCert_ReadAndScanUTF8_Ans>::Pointer ctx); //ex1
  21. virtual void Handle_ReadAndScanUTF8JS(SpReqAnsContext<IDCert_ReadAndScanUTF8JS_Req, IDCert_ReadAndScanUTF8JS_Ans>::Pointer ctx);
  22. private:
  23. CIDCertEntity* m_pEntity;
  24. };
  25. class CIDCertEntity : public CDevAdptEntityBase
  26. {
  27. public:
  28. CIDCertEntity(){}
  29. virtual ~CIDCertEntity(){}
  30. virtual const char *GetEntityName() const { return "IDCertificate"; }
  31. const char* GetEntityVersion() const { return MODULE_VERSION_FULL; }
  32. virtual void OnPreStart(CAutoArray<CSimpleStringA> strArgs,CSmartPointer<ITransactionContext> pTransactionContext)
  33. {
  34. LOG_FUNCTION();
  35. ErrorCodeEnum rt = m_fsm.Init(this);
  36. pTransactionContext->SendAnswer(rt);
  37. }
  38. virtual void OnPrePause(CSmartPointer<ITransactionContext> pTransactionContext)
  39. {
  40. pTransactionContext->SendAnswer(Error_Succeed);
  41. }
  42. virtual void OnPreContinue(CSmartPointer<ITransactionContext> pTransactionContext)
  43. {
  44. pTransactionContext->SendAnswer(Error_Succeed);
  45. }
  46. virtual void OnPreClose(EntityCloseCauseEnum eCloseCause,CSmartPointer<ITransactionContext> pTransactionContext)
  47. {
  48. m_fsm.OnExit();
  49. pTransactionContext->SendAnswer(Error_Succeed);
  50. }
  51. virtual void OnSelfTest(EntityTestEnum eTestType,CSmartPointer<ITransactionContext> pTransactionContext)
  52. {
  53. m_fsm.SelfTest(eTestType,pTransactionContext);
  54. }
  55. virtual CServerSessionBase* OnNewSession(const char*,const char*)
  56. {
  57. return new IDCertServerSession(this);
  58. }
  59. void CancelRead(SpOnewayCallContext<IDCert_CancelRead_Info>::Pointer ctx)
  60. {
  61. CancelReadEvent* e = new CancelReadEvent();
  62. m_fsm.PostEventFIFO(e);
  63. }
  64. void CancelReadJS(SpReqAnsContext<IDCert_CancelReadJS_Req, IDCert_CancelReadJS_Ans>::Pointer ctx) //ex2
  65. {
  66. if (!m_fsm.GetDevInitFlag())
  67. {
  68. ctx->Answer(Error_DevNotAvailable, IDCertificate_UserErrorCode_DevOpenFailed);
  69. LogWarn(Severity_Middle, Error_DevNotAvailable, IDCertificate_UserErrorCode_DevOpenFailed, "Open Dev failed.(ReadAndScanUTF8JS)");
  70. return;
  71. }
  72. else if(!m_fsm.GetReadFlag())
  73. {
  74. ctx->Answer(Error_Unexpect, IDCertificate_UserErrorCode_ReadAndScan_NotOnReading);
  75. return;
  76. }
  77. CancelReadEvent* e = new CancelReadEvent();
  78. m_fsm.PostEventFIFO(e);
  79. ctx->Answer(Error_Succeed);
  80. }
  81. void Exit(SpOnewayCallContext<IDCert_Exit_Info>::Pointer ctx)
  82. {
  83. FSMEvent* evt = new FSMEvent(USER_EVT_EXIT);
  84. m_fsm.PostEventFIFO(evt);
  85. }
  86. void ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCert_ReadAndScanUTF8_Ans>::Pointer ctx) //ex2
  87. {
  88. if (!m_fsm.GetDevInitFlag())
  89. {
  90. ctx->Answer(Error_DevNotAvailable, IDCertificate_UserErrorCode_DevOpenFailed);
  91. LogWarn(Severity_Middle, Error_DevNotAvailable, IDCertificate_UserErrorCode_DevOpenFailed, "Open Dev failed.(ReadAndScanUTF8)");
  92. return;
  93. }
  94. ReadAndScanUTF8Event* e = new ReadAndScanUTF8Event();
  95. e->ctx = ctx;
  96. m_fsm.PostEventFIFO(e);
  97. }
  98. void ReadAndScanUTF8JS(SpReqAnsContext<IDCert_ReadAndScanUTF8JS_Req, IDCert_ReadAndScanUTF8JS_Ans>::Pointer ctx) //ex2
  99. {
  100. if (!m_fsm.GetDevInitFlag())
  101. {
  102. ctx->Answer(Error_DevNotAvailable, IDCertificate_UserErrorCode_DevOpenFailed);
  103. LogWarn(Severity_Middle, Error_DevNotAvailable, IDCertificate_UserErrorCode_DevOpenFailed, "Open Dev failed.(ReadAndScanUTF8JS)");
  104. return;
  105. }
  106. ReadAndScanUTF8JSEvent* e = new ReadAndScanUTF8JSEvent();
  107. e->ctx = ctx;
  108. m_fsm.PostEventFIFO(e);
  109. }
  110. void GetDevInfo(SpReqAnsContext<IDCert_GetDevInfo_Req, IDCert_GetDevInfo_Ans>::Pointer ctx)
  111. {
  112. if (m_fsm.m_bOpening)
  113. {
  114. ctx->Answer(Error_NotInit);
  115. }
  116. else if(!m_fsm.GetDevInitFlag())
  117. {
  118. ctx->Answer(Error_DevNotAvailable, IDCertificate_UserErrorCode_DevOpenFailed);
  119. return;
  120. }
  121. else
  122. {
  123. DevCategoryInfo devCatInfo;
  124. CSimpleStringA devType = "";
  125. ctx->Ans.state = m_fsm.GetDevCatInfo(devCatInfo, devType);
  126. ctx->Ans.model = devCatInfo.szModel;
  127. ctx->Ans.type = devCatInfo.szType;
  128. ctx->Ans.type += ((devType == "4") ? "#IG" : "#");
  129. ctx->Answer(Error_Succeed);
  130. return;
  131. }
  132. }
  133. virtual bool IsService()const{return true;}
  134. virtual bool IsMultiThread()const{return false;}
  135. private:
  136. CIDCertFSM m_fsm;
  137. };
  138. #endif // MOD_IDCERTIFICATE_H