Beispiel #1
0
        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));
        }
Beispiel #2
0
 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
                ));
 }