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)); }