public override OperationResponse Handle(OperationRequest request, SendParameters sendParameters)
        {
            InvokeMethodOperationRequest operation = new InvokeMethodOperationRequest(peer.Protocol, request);

            if (!operation.IsValid)
            {
                return(new OperationResponse(request.OperationCode)
                {
                    ReturnCode = (short)ReturnCode.InvalidOperationParameter,
                    DebugMessage = operation.GetErrorMessage()
                });
            }

            var lpeer  = peer as LoginClientPeer;
            var method = lpeer.invoker.GetType().GetMethod(operation.method);

            if (method == null)
            {
                return(new OperationResponse(request.OperationCode)
                {
                    ReturnCode = (short)ReturnCode.Fatal,
                    DebugMessage = string.Format("method = {0} not founded", operation.method)
                });
            }

            object result = method.Invoke(lpeer.invoker, operation.arguments);
            InvokeMethodOperationResponse responseObject = new InvokeMethodOperationResponse {
                method      = operation.method,
                returnValue = result
            };

            return(new OperationResponse(request.OperationCode, responseObject));
        }
        public override OperationResponse Handle(OperationRequest request, SendParameters sendParameters)
        {
            InvokeMethodOperationRequest operation = new InvokeMethodOperationRequest(peer.Protocol, request);

            if (!operation.IsValid)
            {
                return(InvalidParametersOperationResponse((SelectCharacterOperationCode)request.OperationCode));
            }

            var method = peer.invoker.GetType().GetMethod(operation.MethodName);

            if (method == null)
            {
                return(new OperationResponse(request.OperationCode)
                {
                    ReturnCode = (short)ReturnCode.Fatal, DebugMessage = string.Format("method = {0} not founded", operation.MethodName)
                });
            }
            object result = method.Invoke(peer.invoker, operation.Arguments);
            InvokeMethodOperationResponse response = new InvokeMethodOperationResponse {
                MethodName = operation.MethodName, ReturnValue = result
            };

            return(new OperationResponse(request.OperationCode, response));
        }