public static async Task RegisterCapability(this IResponseRouter mediator, RegistrationParams @params) { try { await mediator.SendRequest(Client.ClientNames.RegisterCapability, @params); } catch (Exception e) { // VsCode today does not implement LSP properly. await mediator.SendRequest("client/registerFeature", @params); } }
public static Task CreateProgress(this IResponseRouter mediator, ProgressToken token, CancellationToken cancellationToken) { return(mediator.SendRequest(new WorkDoneProgressCreateParams() { Token = token }, cancellationToken)); }
private IObservable <TResponse> MakeRequest <TResponse>(IRequest <TResponse> request) => // Has problems with wanting custom exceptions around cancellation. // Observable.FromAsync(ct => _router.SendRequest(request, ct)) Observable.Create <TResponse>( async(observer, ct) => { try { observer.OnNext(await _router.SendRequest(request, ct).ConfigureAwait(false)); observer.OnCompleted(); } catch (OperationCanceledException e) { observer.OnError(e); } catch (Exception e) { observer.OnError(e); } } );
/// <summary> /// Creates a <see cref="IObserver{WorkDoneProgressReport}" /> that will send all of its progress information to the same source. /// The other side can cancel this, so the <see cref="CancellationToken" /> should be respected. /// </summary> public async Task <IWorkDoneObserver> Create(ProgressToken progressToken, WorkDoneProgressBegin begin, Func <Exception, WorkDoneProgressEnd> onError = null, Func <WorkDoneProgressEnd> onComplete = null, CancellationToken cancellationToken = default) { if (!_supported) { return(NoopWorkDoneObserver.Instance); } if (_activeObservers.TryGetValue(progressToken, out var item)) { return(item); } await _router.SendRequest(new WorkDoneProgressCreateParams() { Token = progressToken }, cancellationToken); onError ??= error => new WorkDoneProgressEnd() { Message = error.ToString() }; onComplete ??= () => new WorkDoneProgressEnd(); var cts = new CancellationTokenSource(); var observer = new WorkDoneObserver( progressToken, _router, _serializer, begin, onError, onComplete, cts.Token ); _activeObservers.TryAdd(observer.WorkDoneToken, observer); _activeObserverTokens.TryAdd(observer.WorkDoneToken, cts); return(observer); }
public Task <TResponse> SendRequest <T, TResponse>(string method, T @params, CancellationToken cancellationToken) => _responseRouter.SendRequest <T, TResponse>(method, @params, cancellationToken);
public Task <TResponse> SendRequest <T, TResponse>(string method, T @params) { return(_responseRouter.SendRequest <T, TResponse>(method, @params)); }
public IResponseRouterReturns SendRequest <T>(string method, T @params) => _responseRouter.SendRequest(method, @params);
public static Task <MessageActionItem> ShowMessage(this IResponseRouter mediator, ShowMessageRequestParams @params) { return(mediator.SendRequest <ShowMessageRequestParams, MessageActionItem>(WindowNames.ShowMessageRequest, @params)); }
public static Task <ApplyWorkspaceEditResponse> ApplyEdit(this IResponseRouter mediator, ApplyWorkspaceEditParams @params) { return(mediator.SendRequest <ApplyWorkspaceEditParams, ApplyWorkspaceEditResponse>(WorkspaceNames.ApplyEdit, @params)); }