#ifndef __INTERACTIVELOG_SERVER_G_H #define __INTERACTIVELOG_SERVER_G_H #pragma once // This code is generated by spgen tool! #include "InteractiveLog_def_g.h" namespace InteractiveLog { class LogService_ServerSessionBase : public CServerSessionBase { public: LogService_ServerSessionBase() { } virtual ~LogService_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 LogService_Method_LogFunction: if (dwSignature == LogService_MethodSignature_LogFunction) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case LogService_Method_LogCustomerID: if (dwSignature == LogService_MethodSignature_LogCustomerID) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case LogService_Method_LogAgreement: if (dwSignature == LogService_MethodSignature_LogAgreement) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case LogService_Method_LogReceipt: if (dwSignature == LogService_MethodSignature_LogReceipt) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case LogService_Method_LogOperation: if (dwSignature == LogService_MethodSignature_LogOperation) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case LogService_Method_LogResponse: if (dwSignature == LogService_MethodSignature_LogResponse) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case LogService_Method_LogAgent: if (dwSignature == LogService_MethodSignature_LogAgent) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case LogService_Method_LogBegin: if (dwSignature == LogService_MethodSignature_LogBegin) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case LogService_Method_LogEnd: if (dwSignature == LogService_MethodSignature_LogEnd) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case LogService_Method_LogCallID: if (dwSignature == LogService_MethodSignature_LogCallID) { 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 LogService_Method_LogFunction: if (dwSignature != LogService_MethodSignature_LogFunction) { Error = Error_MethodSignatureFailed; } break; case LogService_Method_LogCustomerID: if (dwSignature != LogService_MethodSignature_LogCustomerID) { Error = Error_MethodSignatureFailed; } break; case LogService_Method_LogAgreement: if (dwSignature != LogService_MethodSignature_LogAgreement) { Error = Error_MethodSignatureFailed; } break; case LogService_Method_LogReceipt: if (dwSignature != LogService_MethodSignature_LogReceipt) { Error = Error_MethodSignatureFailed; } break; case LogService_Method_LogOperation: if (dwSignature != LogService_MethodSignature_LogOperation) { Error = Error_MethodSignatureFailed; } break; case LogService_Method_LogResponse: if (dwSignature != LogService_MethodSignature_LogResponse) { Error = Error_MethodSignatureFailed; } break; case LogService_Method_LogAgent: if (dwSignature != LogService_MethodSignature_LogAgent) { Error = Error_MethodSignatureFailed; } break; case LogService_Method_LogBegin: if (dwSignature != LogService_MethodSignature_LogBegin) { Error = Error_MethodSignatureFailed; } break; case LogService_Method_LogEnd: if (dwSignature != LogService_MethodSignature_LogEnd) { Error = Error_MethodSignatureFailed; } break; case LogService_Method_LogCallID: if (dwSignature != LogService_MethodSignature_LogCallID) { Error = Error_MethodSignatureFailed; } break; default: Error = Error_MethodNotFound; break; } return Error; } virtual void Handle_LogFunction(SpOnewayCallContext::Pointer ctx) { /// override by user } virtual void Handle_LogCustomerID(SpOnewayCallContext::Pointer ctx) { /// override by user } virtual void Handle_LogAgreement(SpOnewayCallContext::Pointer ctx) { /// override by user } virtual void Handle_LogReceipt(SpOnewayCallContext::Pointer ctx) { /// override by user } virtual void Handle_LogOperation(SpOnewayCallContext::Pointer ctx) { /// override by user } virtual void Handle_LogResponse(SpOnewayCallContext::Pointer ctx) { /// override by user } virtual void Handle_LogAgent(SpOnewayCallContext::Pointer ctx) { /// override by user } virtual void Handle_LogBegin(SpOnewayCallContext::Pointer ctx) { /// override by user } virtual void Handle_LogEnd(SpOnewayCallContext::Pointer ctx) { /// override by user } virtual void Handle_LogCallID(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 LogService_Method_LogFunction: { SpOnewayCallContext::Pointer ctx; ctx.Attach(new SpOnewayCallContext()); SpBuffer2Object(Buf, ctx->Info); Handle_LogFunction(ctx); } break; case LogService_Method_LogCustomerID: { SpOnewayCallContext::Pointer ctx; ctx.Attach(new SpOnewayCallContext()); SpBuffer2Object(Buf, ctx->Info); Handle_LogCustomerID(ctx); } break; case LogService_Method_LogAgreement: { SpOnewayCallContext::Pointer ctx; ctx.Attach(new SpOnewayCallContext()); SpBuffer2Object(Buf, ctx->Info); Handle_LogAgreement(ctx); } break; case LogService_Method_LogReceipt: { SpOnewayCallContext::Pointer ctx; ctx.Attach(new SpOnewayCallContext()); SpBuffer2Object(Buf, ctx->Info); Handle_LogReceipt(ctx); } break; case LogService_Method_LogOperation: { SpOnewayCallContext::Pointer ctx; ctx.Attach(new SpOnewayCallContext()); SpBuffer2Object(Buf, ctx->Info); Handle_LogOperation(ctx); } break; case LogService_Method_LogResponse: { SpOnewayCallContext::Pointer ctx; ctx.Attach(new SpOnewayCallContext()); SpBuffer2Object(Buf, ctx->Info); Handle_LogResponse(ctx); } break; case LogService_Method_LogAgent: { SpOnewayCallContext::Pointer ctx; ctx.Attach(new SpOnewayCallContext()); SpBuffer2Object(Buf, ctx->Info); Handle_LogAgent(ctx); } break; case LogService_Method_LogBegin: { SpOnewayCallContext::Pointer ctx; ctx.Attach(new SpOnewayCallContext()); SpBuffer2Object(Buf, ctx->Info); Handle_LogBegin(ctx); } break; case LogService_Method_LogEnd: { SpOnewayCallContext::Pointer ctx; ctx.Attach(new SpOnewayCallContext()); SpBuffer2Object(Buf, ctx->Info); Handle_LogEnd(ctx); } break; case LogService_Method_LogCallID: { SpOnewayCallContext::Pointer ctx; ctx.Attach(new SpOnewayCallContext()); SpBuffer2Object(Buf, ctx->Info); Handle_LogCallID(ctx); } break; default: assert(0); break; } } else { pTransactionContext->SendAnswer(Error); } } }; /////////////////////////// } // namespace InteractiveLog #endif // __INTERACTIVELOG_SERVER_G_H