#ifndef __CONTACTLESSCARD_SERVER_G_H #define __CONTACTLESSCARD_SERVER_G_H #pragma once // This code is generated by spgen tool! #include "ContactlessCard_def_g.h" namespace ContactlessCard { class ContactlessCardService_ServerSessionBase : public CServerSessionBase { public: ContactlessCardService_ServerSessionBase() { /// override by user } virtual ~ContactlessCardService_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 ContactlessCardService_Method_Insert: if (dwSignature == ContactlessCardService_MethodSignature_Insert) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case ContactlessCardService_Method_CancelInsert: if (dwSignature == ContactlessCardService_MethodSignature_CancelInsert) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case ContactlessCardService_Method_InsertWaitMore: if (dwSignature == ContactlessCardService_MethodSignature_InsertWaitMore) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case ContactlessCardService_Method_PreOnline: if (dwSignature == ContactlessCardService_MethodSignature_PreOnline) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case ContactlessCardService_Method_PostOnline: if (dwSignature == ContactlessCardService_MethodSignature_PostOnline) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case ContactlessCardService_Method_Eject: if (dwSignature == ContactlessCardService_MethodSignature_Eject) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case ContactlessCardService_Method_Exit: if (dwSignature == ContactlessCardService_MethodSignature_Exit) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case ContactlessCardService_Method_QueryCardInfo: if (dwSignature == ContactlessCardService_MethodSignature_QueryCardInfo) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case ContactlessCardService_Method_GetDevInfo: if (dwSignature == ContactlessCardService_MethodSignature_GetDevInfo) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case ContactlessCardService_Method_ReadJS: if (dwSignature == ContactlessCardService_MethodSignature_ReadJS) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case ContactlessCardService_Method_PostOnlineJS: if (dwSignature == ContactlessCardService_MethodSignature_PostOnlineJS) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case ContactlessCardService_Method_EjectJS: if (dwSignature == ContactlessCardService_MethodSignature_EjectJS) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case ContactlessCardService_Method_QueryHasCardJS: if (dwSignature == ContactlessCardService_MethodSignature_QueryHasCardJS) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case ContactlessCardService_Method_CancelReadJS: if (dwSignature == ContactlessCardService_MethodSignature_CancelReadJS) { 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 ContactlessCardService_Method_Insert: if (dwSignature != ContactlessCardService_MethodSignature_Insert) { Error = Error_MethodSignatureFailed; } break; case ContactlessCardService_Method_CancelInsert: if (dwSignature != ContactlessCardService_MethodSignature_CancelInsert) { Error = Error_MethodSignatureFailed; } break; case ContactlessCardService_Method_InsertWaitMore: if (dwSignature != ContactlessCardService_MethodSignature_InsertWaitMore) { Error = Error_MethodSignatureFailed; } break; case ContactlessCardService_Method_PreOnline: if (dwSignature != ContactlessCardService_MethodSignature_PreOnline) { Error = Error_MethodSignatureFailed; } break; case ContactlessCardService_Method_PostOnline: if (dwSignature != ContactlessCardService_MethodSignature_PostOnline) { Error = Error_MethodSignatureFailed; } break; case ContactlessCardService_Method_Eject: if (dwSignature != ContactlessCardService_MethodSignature_Eject) { Error = Error_MethodSignatureFailed; } break; case ContactlessCardService_Method_Exit: if (dwSignature != ContactlessCardService_MethodSignature_Exit) { Error = Error_MethodSignatureFailed; } break; case ContactlessCardService_Method_QueryCardInfo: if (dwSignature != ContactlessCardService_MethodSignature_QueryCardInfo) { Error = Error_MethodSignatureFailed; } break; case ContactlessCardService_Method_GetDevInfo: if (dwSignature != ContactlessCardService_MethodSignature_GetDevInfo) { Error = Error_MethodSignatureFailed; } break; case ContactlessCardService_Method_ReadJS: if (dwSignature != ContactlessCardService_MethodSignature_ReadJS) { Error = Error_MethodSignatureFailed; } break; case ContactlessCardService_Method_PostOnlineJS: if (dwSignature != ContactlessCardService_MethodSignature_PostOnlineJS) { Error = Error_MethodSignatureFailed; } break; case ContactlessCardService_Method_EjectJS: if (dwSignature != ContactlessCardService_MethodSignature_EjectJS) { Error = Error_MethodSignatureFailed; } break; case ContactlessCardService_Method_QueryHasCardJS: if (dwSignature != ContactlessCardService_MethodSignature_QueryHasCardJS) { Error = Error_MethodSignatureFailed; } break; case ContactlessCardService_Method_CancelReadJS: if (dwSignature != ContactlessCardService_MethodSignature_CancelReadJS) { Error = Error_MethodSignatureFailed; } break; default: Error = Error_MethodNotFound; break; } return Error; } virtual void Handle_Insert(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_CancelInsert(SpOnewayCallContext::Pointer ctx) { /// override by user } virtual void Handle_InsertWaitMore(SpOnewayCallContext::Pointer ctx) { /// override by user } virtual void Handle_PreOnline(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_PostOnline(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_Eject(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_Exit(SpOnewayCallContext::Pointer ctx) { /// override by user } virtual void Handle_QueryCardInfo(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_GetDevInfo(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_ReadJS(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_PostOnlineJS(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_EjectJS(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_QueryHasCardJS(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_CancelReadJS(SpOnewayCallContext::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 ContactlessCardService_Method_Insert: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); pTransactionContext->GetLinkContext(ctx->link); EntityResource::setLink(ctx->link); Handle_Insert(ctx); } break; case ContactlessCardService_Method_CancelInsert: { SpOnewayCallContext::Pointer ctx; ctx.Attach(new SpOnewayCallContext()); SpBuffer2Object(Buf, ctx->Info); pTransactionContext->GetLinkContext(ctx->link); EntityResource::setLink(ctx->link); Handle_CancelInsert(ctx); } break; case ContactlessCardService_Method_InsertWaitMore: { SpOnewayCallContext::Pointer ctx; ctx.Attach(new SpOnewayCallContext()); SpBuffer2Object(Buf, ctx->Info); pTransactionContext->GetLinkContext(ctx->link); EntityResource::setLink(ctx->link); Handle_InsertWaitMore(ctx); } break; case ContactlessCardService_Method_PreOnline: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); pTransactionContext->GetLinkContext(ctx->link); EntityResource::setLink(ctx->link); Handle_PreOnline(ctx); } break; case ContactlessCardService_Method_PostOnline: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); pTransactionContext->GetLinkContext(ctx->link); EntityResource::setLink(ctx->link); Handle_PostOnline(ctx); } break; case ContactlessCardService_Method_Eject: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); pTransactionContext->GetLinkContext(ctx->link); EntityResource::setLink(ctx->link); Handle_Eject(ctx); } break; case ContactlessCardService_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 ContactlessCardService_Method_QueryCardInfo: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); pTransactionContext->GetLinkContext(ctx->link); EntityResource::setLink(ctx->link); Handle_QueryCardInfo(ctx); } break; case ContactlessCardService_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; case ContactlessCardService_Method_ReadJS: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); pTransactionContext->GetLinkContext(ctx->link); EntityResource::setLink(ctx->link); Handle_ReadJS(ctx); } break; case ContactlessCardService_Method_PostOnlineJS: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); pTransactionContext->GetLinkContext(ctx->link); EntityResource::setLink(ctx->link); Handle_PostOnlineJS(ctx); } break; case ContactlessCardService_Method_EjectJS: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); pTransactionContext->GetLinkContext(ctx->link); EntityResource::setLink(ctx->link); Handle_EjectJS(ctx); } break; case ContactlessCardService_Method_QueryHasCardJS: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); pTransactionContext->GetLinkContext(ctx->link); EntityResource::setLink(ctx->link); Handle_QueryHasCardJS(ctx); } break; case ContactlessCardService_Method_CancelReadJS: { SpOnewayCallContext::Pointer ctx; ctx.Attach(new SpOnewayCallContext()); SpBuffer2Object(Buf, ctx->Info); pTransactionContext->GetLinkContext(ctx->link); EntityResource::setLink(ctx->link); Handle_CancelReadJS(ctx); } break; default: assert(0); break; } } else { pTransactionContext->SendAnswer(Error); } } }; /////////////////////////// } // namespace ContactlessCard #endif // __CONTACTLESSCARD_SERVER_G_H