#ifndef __FREERDPWRAP_SERVER_G_H #define __FREERDPWRAP_SERVER_G_H #pragma once // This code is generated by spgen tool! #include "FreeRDPWrap_def_g.h" namespace FreeRDPWrap { class FreeRDPWrapSrv_ServerSessionBase : public CServerSessionBase { public: FreeRDPWrapSrv_ServerSessionBase() { /// override by user } virtual ~FreeRDPWrapSrv_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 FreeRDPWrapSrv_Method_InviteRdpShare: if (dwSignature == FreeRDPWrapSrv_MethodSignature_InviteRdpShare) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case FreeRDPWrapSrv_Method_CloseRdpShare: if (dwSignature == FreeRDPWrapSrv_MethodSignature_CloseRdpShare) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case FreeRDPWrapSrv_Method_CreateProcessRunAs: if (dwSignature == FreeRDPWrapSrv_MethodSignature_CreateProcessRunAs) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case FreeRDPWrapSrv_Method_DealWithFreeRdp: if (dwSignature == FreeRDPWrapSrv_MethodSignature_DealWithFreeRdp) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case FreeRDPWrapSrv_Method_DealWithRDPWrap: if (dwSignature == FreeRDPWrapSrv_MethodSignature_DealWithRDPWrap) { bOverlap = true; } else { Error = Error_MethodSignatureFailed; } break; case FreeRDPWrapSrv_Method_AgentAssistant: if (dwSignature == FreeRDPWrapSrv_MethodSignature_AgentAssistant) { 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 FreeRDPWrapSrv_Method_InviteRdpShare: if (dwSignature != FreeRDPWrapSrv_MethodSignature_InviteRdpShare) { Error = Error_MethodSignatureFailed; } break; case FreeRDPWrapSrv_Method_CloseRdpShare: if (dwSignature != FreeRDPWrapSrv_MethodSignature_CloseRdpShare) { Error = Error_MethodSignatureFailed; } break; case FreeRDPWrapSrv_Method_CreateProcessRunAs: if (dwSignature != FreeRDPWrapSrv_MethodSignature_CreateProcessRunAs) { Error = Error_MethodSignatureFailed; } break; case FreeRDPWrapSrv_Method_DealWithFreeRdp: if (dwSignature != FreeRDPWrapSrv_MethodSignature_DealWithFreeRdp) { Error = Error_MethodSignatureFailed; } break; case FreeRDPWrapSrv_Method_DealWithRDPWrap: if (dwSignature != FreeRDPWrapSrv_MethodSignature_DealWithRDPWrap) { Error = Error_MethodSignatureFailed; } break; case FreeRDPWrapSrv_Method_AgentAssistant: if (dwSignature != FreeRDPWrapSrv_MethodSignature_AgentAssistant) { Error = Error_MethodSignatureFailed; } break; default: Error = Error_MethodNotFound; break; } return Error; } virtual void Handle_InviteRdpShare(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_CloseRdpShare(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_CreateProcessRunAs(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_DealWithFreeRdp(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_DealWithRDPWrap(SpReqAnsContext::Pointer ctx) { /// override by user } virtual void Handle_AgentAssistant(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 FreeRDPWrapSrv_Method_InviteRdpShare: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); Handle_InviteRdpShare(ctx); } break; case FreeRDPWrapSrv_Method_CloseRdpShare: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); Handle_CloseRdpShare(ctx); } break; case FreeRDPWrapSrv_Method_CreateProcessRunAs: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); Handle_CreateProcessRunAs(ctx); } break; case FreeRDPWrapSrv_Method_DealWithFreeRdp: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); Handle_DealWithFreeRdp(ctx); } break; case FreeRDPWrapSrv_Method_DealWithRDPWrap: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); Handle_DealWithRDPWrap(ctx); } break; case FreeRDPWrapSrv_Method_AgentAssistant: { SpReqAnsContext::Pointer ctx; ctx.Attach(new SpReqAnsContext(pTransactionContext)); SpBuffer2Object(Buf, ctx->Req); Handle_AgentAssistant(ctx); } break; default: assert(0); break; } } else { pTransactionContext->SendAnswer(Error); } } }; /////////////////////////// } // namespace FreeRDPWrap #endif // __FREERDPWRAP_SERVER_G_H