public Task <ResponseType> ExecuteRequestAsync <RequestType, ResponseType>(RequestExecutionQueue queue, string methodName, RequestType request, LSP.ClientCapabilities clientCapabilities, string?clientName, CancellationToken cancellationToken) where RequestType : class { Contract.ThrowIfNull(request); Contract.ThrowIfTrue(string.IsNullOrEmpty(methodName), "Invalid method name"); var handlerEntry = _requestHandlers[methodName]; Contract.ThrowIfNull(handlerEntry, string.Format("Request handler entry not found for method {0}", methodName)); var mutatesSolutionState = handlerEntry.Metadata.MutatesSolutionState; var handler = (IRequestHandler <RequestType, ResponseType>?)handlerEntry.Value; Contract.ThrowIfNull(handler, string.Format("Request handler not found for method {0}", methodName)); return(queue.ExecuteAsync(mutatesSolutionState, handler, request, clientCapabilities, clientName, cancellationToken)); }
protected virtual Task <ResponseType> ExecuteRequestAsync <RequestType, ResponseType>( RequestExecutionQueue queue, RequestType request, ClientCapabilities clientCapabilities, string?clientName, string methodName, bool mutatesSolutionState, bool requiresLSPSolution, IRequestHandler <RequestType, ResponseType> handler, CancellationToken cancellationToken ) where RequestType : class { return(queue.ExecuteAsync( mutatesSolutionState, requiresLSPSolution, handler, request, clientCapabilities, clientName, methodName, cancellationToken )); }