#ifndef __PINPAD_SERVER_G_H #define __PINPAD_SERVER_G_H #pragma once // This code is generated by spgen tool! #include "PinPad_def_g.h" namespace PinPad { class PinPadService_ServerSessionBase : public CServerSessionBase { public: PinPadService_ServerSessionBase() { /// override by user } virtual ~PinPadService_ServerSessionBase() { /// override by user } virtual bool IsExclusive() { return false; } virtual bool IsSessionOverlap() { return true; } virtual ErrorCodeEnum GetMessageAttr(DWORD dwMessageID, DWORD dwSignature, bool &bOverlap) { ErrorCodeEnum Error = Error_Succeed; switch (dwMessageID) { case PinPadService_Method_InputWaitMore: if (dwSignature == PinPadService_MethodSignature_InputWaitMore) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case PinPadService_Method_InputCancel: if (dwSignature == PinPadService_MethodSignature_InputCancel) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case PinPadService_Method_Exit: if (dwSignature == PinPadService_MethodSignature_Exit) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case PinPadService_Method_GetInputJS: if (dwSignature == PinPadService_MethodSignature_GetInputJS) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case PinPadService_Method_InputCancelJS: if (dwSignature == PinPadService_MethodSignature_InputCancelJS) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case PinPadService_Method_GetInputSM: if (dwSignature == PinPadService_MethodSignature_GetInputSM) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case PinPadService_Method_LoadKeysSM: if (dwSignature == PinPadService_MethodSignature_LoadKeysSM) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case PinPadService_Method_EncryptDataSM: if (dwSignature == PinPadService_MethodSignature_EncryptDataSM) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case PinPadService_Method_QueryFunc: if (dwSignature == PinPadService_MethodSignature_QueryFunc) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case PinPadService_Method_GetCheckCode: if (dwSignature == PinPadService_MethodSignature_GetCheckCode) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case PinPadService_Method_GetDevInfo: if (dwSignature == PinPadService_MethodSignature_GetDevInfo) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; default: Error = Error_MethodNotFound; break; } return Error; } int CheckMessageSignature(DWORD dwMessageID, DWORD dwSignature) { ErrorCodeEnum Error = Error_Succeed; switch (dwMessageID) { case PinPadService_Method_InputWaitMore: if (dwSignature != PinPadService_MethodSignature_InputWaitMore) { Error = Error_MethodSignatureFailed; } break; case PinPadService_Method_InputCancel: if (dwSignature != PinPadService_MethodSignature_InputCancel) { Error = Error_MethodSignatureFailed; } break; case PinPadService_Method_Exit: if (dwSignature != PinPadService_MethodSignature_Exit) { Error = Error_MethodSignatureFailed; } break; case PinPadService_Method_GetInputJS: if (dwSignature != PinPadService_MethodSignature_GetInputJS) { Error = Error_MethodSignatureFailed; } break; case PinPadService_Method_InputCancelJS: if (dwSignature != PinPadService_MethodSignature_InputCancelJS) { Error = Error_MethodSignatureFailed; } break; case PinPadService_Method_GetInputSM: if (dwSignature != PinPadService_MethodSignature_GetInputSM) { Error = Error_MethodSignatureFailed; } break; case PinPadService_Method_LoadKeysSM: if (dwSignature != PinPadService_MethodSignature_LoadKeysSM) { Error = Error_MethodSignatureFailed; } break; case PinPadService_Method_EncryptDataSM: if (dwSignature != PinPadService_MethodSignature_EncryptDataSM) { Error = Error_MethodSignatureFailed; } break; case PinPadService_Method_QueryFunc: if (dwSignature != PinPadService_MethodSignature_QueryFunc) { Error = Error_MethodSignatureFailed; } break; case PinPadService_Method_GetCheckCode: if (dwSignature != PinPadService_MethodSignature_GetCheckCode) { Error = Error_MethodSignatureFailed; } break; case PinPadService_Method_GetDevInfo: if (dwSignature != PinPadService_MethodSignature_GetDevInfo) { Error = Error_MethodSignatureFailed; } break; default: Error = Error_MethodNotFound; break; } return Error; } virtual void Handle_InputWaitMore(SpOnewayCallContext::Pointer ctx) { /// override by user } virtual void Handle_InputCancel(SpOnewayCallContext::Pointer ctx) { /// override by user } virtual void Handle_Exit(SpOnewayCallContext::Pointer ctx) { /// override by user } virtual void Handle_GetInputJS(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_InputCancelJS(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_GetInputSM(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_LoadKeysSM(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_EncryptDataSM(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_QueryFunc(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_GetCheckCode(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_GetDevInfo(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void OnRequest(CSmartPointer pTransactionContext) { CAutoBuffer Buf; DWORD dwMessageID; DWORD dwMessageSignature; ErrorCodeEnum Error = pTransactionContext->GetReceiveBuffer(dwMessageID, dwMessageSignature, Buf); if (Error == Error_Succeed) { #ifdef DEBUG assert(CheckMessageSignature(dwMessageID, dwMessageSignature) == Error_Succeed); #else if (CheckMessageSignature(dwMessageID, dwMessageSignature) != Error_Succeed) { pTransactionContext->SendAnswer(Error_MethodSignatureFailed); return; } #endif switch (dwMessageID) { case PinPadService_Method_InputWaitMore: { SpOnewayCallContext::Pointer ctx; ctx.Attach(new SpOnewayCallContext()); SpBuffer2Object(Buf, ctx->Info); pTransactionContext->GetLinkContext(ctx->link); EntityResource::setLink(ctx->link); Handle_InputWaitMore(ctx); } break; case PinPadService_Method_InputCancel: { SpOnewayCallContext::Pointer ctx; ctx.Attach(new SpOnewayCallContext()); SpBuffer2Object(Buf, ctx->Info); pTransactionContext->GetLinkContext(ctx->link); EntityResource::setLink(ctx->link); Handle_InputCancel(ctx); } break; case PinPadService_Method_Exit: { SpOnewayCallContext::Pointer ctx; ctx.Attach(new SpOnewayCallContext()); SpBuffer2Object(Buf, ctx->Info); pTransactionContext->GetLinkContext(ctx->link); EntityResource::setLink(ctx->link); Handle_Exit(ctx); } break; case PinPadService_Method_GetInputJS: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); pTransactionContext->GetLinkContext(ctx->link); EntityResource::setLink(ctx->link); Handle_GetInputJS(ctx); } break; case PinPadService_Method_InputCancelJS: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); pTransactionContext->GetLinkContext(ctx->link); EntityResource::setLink(ctx->link); Handle_InputCancelJS(ctx); } break; case PinPadService_Method_GetInputSM: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); pTransactionContext->GetLinkContext(ctx->link); EntityResource::setLink(ctx->link); Handle_GetInputSM(ctx); } break; case PinPadService_Method_LoadKeysSM: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); pTransactionContext->GetLinkContext(ctx->link); EntityResource::setLink(ctx->link); Handle_LoadKeysSM(ctx); } break; case PinPadService_Method_EncryptDataSM: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); pTransactionContext->GetLinkContext(ctx->link); EntityResource::setLink(ctx->link); Handle_EncryptDataSM(ctx); } break; case PinPadService_Method_QueryFunc: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); pTransactionContext->GetLinkContext(ctx->link); EntityResource::setLink(ctx->link); Handle_QueryFunc(ctx); } break; case PinPadService_Method_GetCheckCode: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); pTransactionContext->GetLinkContext(ctx->link); EntityResource::setLink(ctx->link); Handle_GetCheckCode(ctx); } break; case PinPadService_Method_GetDevInfo: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); pTransactionContext->GetLinkContext(ctx->link); EntityResource::setLink(ctx->link); Handle_GetDevInfo(ctx); } break; default: assert(0); break; } } else { pTransactionContext->SendAnswer(Error); } } }; /////////////////////////// } // namespace PinPad #endif // __PINPAD_SERVER_G_H