mod_ups.cpp 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. #include "stdafx.h"
  2. #include "SpBase.h"
  3. #include "modVer.h"
  4. #include "UpsFSM.h"
  5. #include "DevEntityCommBase.hpp"
  6. using namespace Ups;
  7. class CUpsEntity;
  8. class UpsServerSession : public UpsService_ServerSessionBase
  9. {
  10. public:
  11. UpsServerSession(CUpsEntity* pEntity) : m_pEntity(pEntity){}
  12. virtual ~UpsServerSession(){}
  13. virtual void Handle_Open(SpReqAnsContext<UpsService_Open_Req, UpsService_Open_Ans>::Pointer ctx);
  14. virtual void Handle_GetStatus(SpReqAnsContext<UpsService_GetStatus_Req, UpsService_GetStatus_Ans>::Pointer ctx);
  15. virtual void Handle_Shutdown(SpReqAnsContext<UpsService_Shutdown_Req, UpsService_Shutdown_Ans>::Pointer ctx);
  16. virtual void Handle_Close(SpReqAnsContext<UpsService_Close_Req, UpsService_Close_Ans>::Pointer ctx);
  17. private:
  18. CUpsEntity* m_pEntity;
  19. };
  20. class CUpsEntity : public CDevAdptEntityBase
  21. {
  22. public:
  23. CUpsEntity(){}
  24. virtual ~CUpsEntity(){}
  25. virtual const char *GetEntityName() const { return "Ups"; }
  26. const char* GetEntityVersion() const { return MODULE_VERSION_FULL; }
  27. virtual void OnPreStart(CAutoArray<CSimpleStringA> strArgs,CSmartPointer<ITransactionContext> pTransactionContext)
  28. {
  29. LOG_FUNCTION();
  30. ErrorCodeEnum err = m_fsm.Init(this);
  31. pTransactionContext->SendAnswer(err);
  32. }
  33. virtual void OnPrePause(CSmartPointer<ITransactionContext> pTransactionContext)
  34. {
  35. pTransactionContext->SendAnswer(Error_Succeed);
  36. }
  37. virtual void OnPreClose(EntityCloseCauseEnum eCloseCause,CSmartPointer<ITransactionContext> pTransactionContext)
  38. {
  39. pTransactionContext->SendAnswer(Error_Succeed);
  40. }
  41. virtual CServerSessionBase* OnNewSession(const char*,const char*)
  42. {
  43. LOG_FUNCTION();
  44. return new UpsServerSession(this);
  45. }
  46. void Open(SpReqAnsContext<UpsService_Open_Req, UpsService_Open_Ans>::Pointer ctx)
  47. {
  48. //OpenUpsEvent* e = new OpenUpsEvent();
  49. //e->ctx = ctx;
  50. //m_fsm.PostEventFIFO(e);
  51. ctx->Answer(Error_NotImpl);
  52. }
  53. void GetStatus(SpReqAnsContext<UpsService_GetStatus_Req, UpsService_GetStatus_Ans>::Pointer ctx)
  54. {
  55. GetStatusEvent* e = new GetStatusEvent();
  56. e->ctx = ctx;
  57. m_fsm.PostEventFIFO(e);
  58. }
  59. void Shutdown(SpReqAnsContext<UpsService_Shutdown_Req, UpsService_Shutdown_Ans>::Pointer ctx)
  60. {
  61. ShutDownEvent* e = new ShutDownEvent();
  62. e->ctx = ctx;
  63. m_fsm.PostEventFIFO(e);
  64. }
  65. void Close(SpReqAnsContext<UpsService_Close_Req, UpsService_Close_Ans>::Pointer ctx)
  66. {
  67. ctx->Answer(Error_NotImpl);
  68. }
  69. virtual bool IsService()const{return true;}
  70. virtual bool IsMultiThread()const{return false;}
  71. private:
  72. CUpsFSM m_fsm;
  73. };
  74. void UpsServerSession::Handle_Open(SpReqAnsContext<UpsService_Open_Req, UpsService_Open_Ans>::Pointer ctx)
  75. {
  76. DbgToBeidou(ctx->link, __FUNCTION__)();
  77. m_pEntity->Open(ctx);
  78. }
  79. void UpsServerSession::Handle_GetStatus(SpReqAnsContext<UpsService_GetStatus_Req, UpsService_GetStatus_Ans>::Pointer ctx)
  80. {
  81. DbgToBeidou(ctx->link, __FUNCTION__)();
  82. m_pEntity->GetStatus(ctx);
  83. }
  84. void UpsServerSession::Handle_Shutdown(SpReqAnsContext<UpsService_Shutdown_Req, UpsService_Shutdown_Ans>::Pointer ctx)
  85. {
  86. DbgToBeidou(ctx->link, __FUNCTION__)();
  87. m_pEntity->Shutdown(ctx);
  88. }
  89. void UpsServerSession::Handle_Close(SpReqAnsContext<UpsService_Close_Req, UpsService_Close_Ans>::Pointer ctx)
  90. {
  91. DbgToBeidou(ctx->link, __FUNCTION__)();
  92. m_pEntity->Close(ctx);
  93. }
  94. SP_BEGIN_ENTITY_MAP()
  95. SP_ENTITY(CUpsEntity)
  96. SP_END_ENTITY_MAP()