#ifndef __HSPSCANNER_SERVER_G_H #define __HSPSCANNER_SERVER_G_H #pragma once // This code is generated by spgen tool! #include "HSPScanner_def_g.h" namespace HSPScanner { class HSPScannerService_ServerSessionBase : public CServerSessionBase { public: HSPScannerService_ServerSessionBase() { } virtual ~HSPScannerService_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 HSPScannerService_Method_StartPreview: if (dwSignature == HSPScannerService_MethodSignature_StartPreview) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case HSPScannerService_Method_CancelPreview: if (dwSignature == HSPScannerService_MethodSignature_CancelPreview) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case HSPScannerService_Method_ScanImage: if (dwSignature == HSPScannerService_MethodSignature_ScanImage) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case HSPScannerService_Method_ScanImageEx: if (dwSignature == HSPScannerService_MethodSignature_ScanImageEx) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case HSPScannerService_Method_SetProperty: if (dwSignature == HSPScannerService_MethodSignature_SetProperty) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case HSPScannerService_Method_SetWinPos: if (dwSignature == HSPScannerService_MethodSignature_SetWinPos) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case HSPScannerService_Method_ShowProperty: if (dwSignature == HSPScannerService_MethodSignature_ShowProperty) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case HSPScannerService_Method_GetDevStatus: if (dwSignature == HSPScannerService_MethodSignature_GetDevStatus) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case HSPScannerService_Method_GetDevInfo: if (dwSignature == HSPScannerService_MethodSignature_GetDevInfo) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case HSPScannerService_Method_Exit: if (dwSignature == HSPScannerService_MethodSignature_Exit) { 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 HSPScannerService_Method_StartPreview: if (dwSignature != HSPScannerService_MethodSignature_StartPreview) { Error = Error_MethodSignatureFailed; } break; case HSPScannerService_Method_CancelPreview: if (dwSignature != HSPScannerService_MethodSignature_CancelPreview) { Error = Error_MethodSignatureFailed; } break; case HSPScannerService_Method_ScanImage: if (dwSignature != HSPScannerService_MethodSignature_ScanImage) { Error = Error_MethodSignatureFailed; } break; case HSPScannerService_Method_ScanImageEx: if (dwSignature != HSPScannerService_MethodSignature_ScanImageEx) { Error = Error_MethodSignatureFailed; } break; case HSPScannerService_Method_SetProperty: if (dwSignature != HSPScannerService_MethodSignature_SetProperty) { Error = Error_MethodSignatureFailed; } break; case HSPScannerService_Method_SetWinPos: if (dwSignature != HSPScannerService_MethodSignature_SetWinPos) { Error = Error_MethodSignatureFailed; } break; case HSPScannerService_Method_ShowProperty: if (dwSignature != HSPScannerService_MethodSignature_ShowProperty) { Error = Error_MethodSignatureFailed; } break; case HSPScannerService_Method_GetDevStatus: if (dwSignature != HSPScannerService_MethodSignature_GetDevStatus) { Error = Error_MethodSignatureFailed; } break; case HSPScannerService_Method_GetDevInfo: if (dwSignature != HSPScannerService_MethodSignature_GetDevInfo) { Error = Error_MethodSignatureFailed; } break; case HSPScannerService_Method_Exit: if (dwSignature != HSPScannerService_MethodSignature_Exit) { Error = Error_MethodSignatureFailed; } break; default: Error = Error_MethodNotFound; break; } return Error; } virtual void Handle_StartPreview(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_CancelPreview(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_ScanImage(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_ScanImageEx(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_SetProperty(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_SetWinPos(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_ShowProperty(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_GetDevStatus(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_GetDevInfo(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_Exit(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 HSPScannerService_Method_StartPreview: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); Handle_StartPreview(ctx); } break; case HSPScannerService_Method_CancelPreview: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); Handle_CancelPreview(ctx); } break; case HSPScannerService_Method_ScanImage: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); Handle_ScanImage(ctx); } break; case HSPScannerService_Method_ScanImageEx: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); Handle_ScanImageEx(ctx); } break; case HSPScannerService_Method_SetProperty: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); Handle_SetProperty(ctx); } break; case HSPScannerService_Method_SetWinPos: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); Handle_SetWinPos(ctx); } break; case HSPScannerService_Method_ShowProperty: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); Handle_ShowProperty(ctx); } break; case HSPScannerService_Method_GetDevStatus: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); Handle_GetDevStatus(ctx); } break; case HSPScannerService_Method_GetDevInfo: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); Handle_GetDevInfo(ctx); } break; case HSPScannerService_Method_Exit: { SpOnewayCallContext::Pointer ctx; ctx.Attach(new SpOnewayCallContext()); SpBuffer2Object(Buf, ctx->Info); Handle_Exit(ctx); } break; default: assert(0); break; } } else { pTransactionContext->SendAnswer(Error); } } }; /////////////////////////// } // namespace HSPScanner #endif // __HSPSCANNER_SERVER_G_H