-
Notifications
You must be signed in to change notification settings - Fork 105
/
Copy pathLanguageProtocolProxy.cs
49 lines (38 loc) · 2.34 KB
/
LanguageProtocolProxy.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
using System;
using System.Diagnostics.CodeAnalysis;
using System.Threading;
using System.Threading.Tasks;
using MediatR;
using Newtonsoft.Json.Linq;
using OmniSharp.Extensions.JsonRpc;
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
using OmniSharp.Extensions.LanguageServer.Protocol.Progress;
namespace OmniSharp.Extensions.LanguageServer.Protocol
{
internal abstract class LanguageProtocolProxy : ILanguageProtocolProxy
{
private readonly IResponseRouter _responseRouter;
private readonly IServiceProvider _serviceProvider;
private readonly ILanguageProtocolSettings _languageProtocolSettings;
public LanguageProtocolProxy(
IResponseRouter requestRouter, IServiceProvider serviceProvider, IProgressManager progressManager, ILanguageProtocolSettings languageProtocolSettings
)
{
ProgressManager = progressManager;
_responseRouter = requestRouter;
_serviceProvider = serviceProvider;
_languageProtocolSettings = languageProtocolSettings;
}
public IProgressManager ProgressManager { get; }
public InitializeParams ClientSettings => _languageProtocolSettings.ClientSettings;
public InitializeResult ServerSettings => _languageProtocolSettings.ServerSettings;
public void SendNotification(string method) => _responseRouter.SendNotification(method);
public void SendNotification<T>(string method, T @params) => _responseRouter.SendNotification(method, @params);
public void SendNotification(IRequest request) => _responseRouter.SendNotification(request);
public IResponseRouterReturns SendRequest<T>(string method, T @params) => _responseRouter.SendRequest(method, @params);
public IResponseRouterReturns SendRequest(string method) => _responseRouter.SendRequest(method);
public Task<TResponse> SendRequest<TResponse>(IRequest<TResponse> request, CancellationToken cancellationToken) => _responseRouter.SendRequest(request, cancellationToken);
bool IResponseRouter.TryGetRequest(long id, [NotNullWhen(true)] out string method, [NotNullWhen(true)] out TaskCompletionSource<JToken> pendingTask) => _responseRouter.TryGetRequest(id, out method, out pendingTask);
object IServiceProvider.GetService(Type serviceType) => _serviceProvider.GetService(serviceType);
}
}