#ifndef __VTMLOADER_SERVER_G_H #define __VTMLOADER_SERVER_G_H #pragma once // This code is generated by spgen tool! #include "VtmLoader_def_g.h" namespace VtmLoader { class VtmLoaderService_ServerSessionBase : public CServerSessionBase { public: VtmLoaderService_ServerSessionBase() { /// override by user } virtual ~VtmLoaderService_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 VtmLoaderService_Method_SetTerminalNo: if (dwSignature == VtmLoaderService_MethodSignature_SetTerminalNo) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case VtmLoaderService_Method_NoticeAppReady: if (dwSignature == VtmLoaderService_MethodSignature_NoticeAppReady) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case VtmLoaderService_Method_CheckDeviceEntity: if (dwSignature == VtmLoaderService_MethodSignature_CheckDeviceEntity) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case VtmLoaderService_Method_SaveTerminalNo: if (dwSignature == VtmLoaderService_MethodSignature_SaveTerminalNo) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case VtmLoaderService_Method_DealWithOldEvent: if (dwSignature == VtmLoaderService_MethodSignature_DealWithOldEvent) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case VtmLoaderService_Method_QueryLocalInfo: if (dwSignature == VtmLoaderService_MethodSignature_QueryLocalInfo) { 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 VtmLoaderService_Method_SetTerminalNo: if (dwSignature != VtmLoaderService_MethodSignature_SetTerminalNo) { Error = Error_MethodSignatureFailed; } break; case VtmLoaderService_Method_NoticeAppReady: if (dwSignature != VtmLoaderService_MethodSignature_NoticeAppReady) { Error = Error_MethodSignatureFailed; } break; case VtmLoaderService_Method_CheckDeviceEntity: if (dwSignature != VtmLoaderService_MethodSignature_CheckDeviceEntity) { Error = Error_MethodSignatureFailed; } break; case VtmLoaderService_Method_SaveTerminalNo: if (dwSignature != VtmLoaderService_MethodSignature_SaveTerminalNo) { Error = Error_MethodSignatureFailed; } break; case VtmLoaderService_Method_DealWithOldEvent: if (dwSignature != VtmLoaderService_MethodSignature_DealWithOldEvent) { Error = Error_MethodSignatureFailed; } break; case VtmLoaderService_Method_QueryLocalInfo: if (dwSignature != VtmLoaderService_MethodSignature_QueryLocalInfo) { Error = Error_MethodSignatureFailed; } break; default: Error = Error_MethodNotFound; break; } return Error; } virtual void Handle_SetTerminalNo(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_NoticeAppReady(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_CheckDeviceEntity(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_SaveTerminalNo(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_DealWithOldEvent(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_QueryLocalInfo(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 VtmLoaderService_Method_SetTerminalNo: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); pTransactionContext->GetLinkContext(ctx->link); EntityResource::setLink(ctx->link); Handle_SetTerminalNo(ctx); } break; case VtmLoaderService_Method_NoticeAppReady: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); pTransactionContext->GetLinkContext(ctx->link); EntityResource::setLink(ctx->link); Handle_NoticeAppReady(ctx); } break; case VtmLoaderService_Method_CheckDeviceEntity: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); pTransactionContext->GetLinkContext(ctx->link); EntityResource::setLink(ctx->link); Handle_CheckDeviceEntity(ctx); } break; case VtmLoaderService_Method_SaveTerminalNo: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); pTransactionContext->GetLinkContext(ctx->link); EntityResource::setLink(ctx->link); Handle_SaveTerminalNo(ctx); } break; case VtmLoaderService_Method_DealWithOldEvent: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); pTransactionContext->GetLinkContext(ctx->link); EntityResource::setLink(ctx->link); Handle_DealWithOldEvent(ctx); } break; case VtmLoaderService_Method_QueryLocalInfo: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); pTransactionContext->GetLinkContext(ctx->link); EntityResource::setLink(ctx->link); Handle_QueryLocalInfo(ctx); } break; default: assert(0); break; } } else { pTransactionContext->SendAnswer(Error); } } }; /////////////////////////// } // namespace VtmLoader #endif // __VTMLOADER_SERVER_G_H