#ifndef __SAMPLEENTITY_SERVER_G_H #define __SAMPLEENTITY_SERVER_G_H #pragma once // This code is generated by spgenex tool! #include "SampleEntity_def_g.h" namespace SampleEntity { class SampleService_ServerSessionBase : public CServerSessionBase { public: SampleService_ServerSessionBase() { } virtual ~SampleService_ServerSessionBase() { } 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 SampleService_Method_OnewayFuncOverlap: if (dwSignature == SampleService_MethodSignature_OnewayFuncOverlap) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case SampleService_Method_OnewayFuncNoOverlap: if (dwSignature == SampleService_MethodSignature_OnewayFuncNoOverlap) { bOverlap = false; } else { Error = Error_MethodSignatureFailed; } break; case SampleService_Method_OnewayFuncNormal: if (dwSignature == SampleService_MethodSignature_OnewayFuncNormal) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case SampleService_Method_TwoWayFuncOverlap: if (dwSignature == SampleService_MethodSignature_TwoWayFuncOverlap) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case SampleService_Method_TwoWayFuncNotOverlap: if (dwSignature == SampleService_MethodSignature_TwoWayFuncNotOverlap) { bOverlap = false; } else { Error = Error_MethodSignatureFailed; } break; case SampleService_Method_TwoWayFuncWithID: if (dwSignature == SampleService_MethodSignature_TwoWayFuncWithID) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case SampleService_Method_TwoWayFuncNormal: if (dwSignature == SampleService_MethodSignature_TwoWayFuncNormal) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case SampleService_Method_SubscribeOverlap: if (dwSignature == SampleService_MethodSignature_SubscribeOverlap) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case SampleService_Method_SubscribeOverlap_Cancel: if (dwSignature == SampleService_MethodSignature_SubscribeOverlap_Cancel) { 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 SampleService_Method_OnewayFuncOverlap: if (dwSignature != SampleService_MethodSignature_OnewayFuncOverlap) { Error = Error_MethodSignatureFailed; } break; case SampleService_Method_OnewayFuncNoOverlap: if (dwSignature != SampleService_MethodSignature_OnewayFuncNoOverlap) { Error = Error_MethodSignatureFailed; } break; case SampleService_Method_OnewayFuncNormal: if (dwSignature != SampleService_MethodSignature_OnewayFuncNormal) { Error = Error_MethodSignatureFailed; } break; case SampleService_Method_TwoWayFuncOverlap: if (dwSignature != SampleService_MethodSignature_TwoWayFuncOverlap) { Error = Error_MethodSignatureFailed; } break; case SampleService_Method_TwoWayFuncNotOverlap: if (dwSignature != SampleService_MethodSignature_TwoWayFuncNotOverlap) { Error = Error_MethodSignatureFailed; } break; case SampleService_Method_TwoWayFuncWithID: if (dwSignature != SampleService_MethodSignature_TwoWayFuncWithID) { Error = Error_MethodSignatureFailed; } break; case SampleService_Method_TwoWayFuncNormal: if (dwSignature != SampleService_MethodSignature_TwoWayFuncNormal) { Error = Error_MethodSignatureFailed; } break; case SampleService_Method_SubscribeOverlap: if (dwSignature != SampleService_MethodSignature_SubscribeOverlap) { Error = Error_MethodSignatureFailed; } break; case SampleService_Method_SubscribeOverlap_Cancel: if (dwSignature != SampleService_MethodSignature_SubscribeOverlap_Cancel) { Error = Error_MethodSignatureFailed; } break; default: Error = Error_MethodNotFound; break; } return Error; } virtual void Handle_OnewayFuncOverlap(SpOnewayCallContext::Pointer ctx) { /// override by user } virtual void Handle_OnewayFuncNoOverlap(SpOnewayCallContext::Pointer ctx) { /// override by user } virtual void Handle_OnewayFuncNormal(SpOnewayCallContext::Pointer ctx) { /// override by user } virtual void Handle_TwoWayFuncOverlap(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_TwoWayFuncNotOverlap(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_TwoWayFuncWithID(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_TwoWayFuncNormal(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_SubscribeOverlap(SpSubscribeContext::Pointer ctx) { /// override by user } virtual void Handle_SubscribeOverlap_Cancel(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 SampleService_Method_OnewayFuncOverlap: { SpOnewayCallContext::Pointer ctx; ctx.Attach(new SpOnewayCallContext()); SpBuffer2Object(Buf, ctx->Info); Handle_OnewayFuncOverlap(ctx); } break; case SampleService_Method_OnewayFuncNoOverlap: { SpOnewayCallContext::Pointer ctx; ctx.Attach(new SpOnewayCallContext()); SpBuffer2Object(Buf, ctx->Info); Handle_OnewayFuncNoOverlap(ctx); } break; case SampleService_Method_OnewayFuncNormal: { SpOnewayCallContext::Pointer ctx; ctx.Attach(new SpOnewayCallContext()); SpBuffer2Object(Buf, ctx->Info); Handle_OnewayFuncNormal(ctx); } break; case SampleService_Method_TwoWayFuncOverlap: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); Handle_TwoWayFuncOverlap(ctx); } break; case SampleService_Method_TwoWayFuncNotOverlap: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); Handle_TwoWayFuncNotOverlap(ctx); } break; case SampleService_Method_TwoWayFuncWithID: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); Handle_TwoWayFuncWithID(ctx); } break; case SampleService_Method_TwoWayFuncNormal: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); Handle_TwoWayFuncNormal(ctx); } break; case SampleService_Method_SubscribeOverlap: { SpSubscribeContext::Pointer ctx; ctx.Attach(new SpSubscribeContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); Handle_SubscribeOverlap(ctx); } break; case SampleService_Method_SubscribeOverlap_Cancel: { SpOnewayCallContext::Pointer ctx; ctx.Attach(new SpOnewayCallContext()); SpBuffer2Object(Buf, ctx->Info); Handle_SubscribeOverlap_Cancel(ctx); } break; default: assert(0); break; } } else { pTransactionContext->SendAnswer(Error); } } }; /////////////////////////// } // namespace SampleEntity #endif // __SAMPLEENTITY_SERVER_G_H