mod_IDCertificate.h 4.7 KB

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