From 2336046f003eab16ace4550b28d625abadb189ee Mon Sep 17 00:00:00 2001 From: David Wengier Date: Thu, 6 Aug 2020 13:37:27 +1000 Subject: [PATCH] Move context creation into execution queue --- .../Protocol/AbstractRequestHandlerProvider.cs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/Features/LanguageServer/Protocol/AbstractRequestHandlerProvider.cs b/src/Features/LanguageServer/Protocol/AbstractRequestHandlerProvider.cs index d89383fca88..b194301a98e 100644 --- a/src/Features/LanguageServer/Protocol/AbstractRequestHandlerProvider.cs +++ b/src/Features/LanguageServer/Protocol/AbstractRequestHandlerProvider.cs @@ -20,6 +20,8 @@ internal abstract class AbstractRequestHandlerProvider { private readonly ImmutableDictionary> _requestHandlers; + private readonly RequestExecutionQueue _queue = new RequestExecutionQueue(); + public AbstractRequestHandlerProvider(IEnumerable> requestHandlers, string? languageName = null) => _requestHandlers = CreateMethodToHandlerMap(requestHandlers.Where(rh => rh.Metadata.LanguageName == languageName)); @@ -43,11 +45,7 @@ public AbstractRequestHandlerProvider(IEnumerable?)_requestHandlers[methodName]?.Value; Contract.ThrowIfNull(handler, string.Format("Request handler not found for method {0}", methodName)); - var context = CreateContext(clientCapabilities, clientName); - return handler.HandleRequestAsync(request, context, cancellationToken); + return _queue.ExecuteAsync(false, handler, request, clientCapabilities, clientName, cancellationToken); } - - private static RequestContext CreateContext(LSP.ClientCapabilities clientCapabilities, string? clientName) - => new RequestContext(clientCapabilities, clientName); } } -- GitLab