public static IRequestProgressObservable <IEnumerable <TItem>, TResponse> RequestProgress <TResponse, TItem>( this ILanguageProtocolProxy requestRouter, IPartialItemsRequest <TResponse, TItem> @params, Func <IEnumerable <TItem>, TResponse> factory, CancellationToken cancellationToken = default ) where TResponse : IEnumerable <TItem> { var resultToken = new ProgressToken(Guid.NewGuid().ToString()); @params.PartialResultToken = resultToken; return(requestRouter.ProgressManager.MonitorUntil(@params, factory, cancellationToken)); }
public IRequestProgressObservable <TItem> MonitorUntil <TItem>(IPartialItemsRequest <TItem> request, CancellationToken cancellationToken) { request.PartialResultToken ??= new ProgressToken(Guid.NewGuid().ToString()); if (_activeObservables.TryGetValue(request.PartialResultToken, out var o) && o is IRequestProgressObservable <TItem> observable) { return(observable); } observable = new PartialItemsRequestProgressObservable <TItem>(_serializer, request.PartialResultToken, MakeRequest(request), x => new Container <TItem>(x), cancellationToken, () => _activeObservables.TryRemove(request.PartialResultToken, out var disposable)); _activeObservables.TryAdd(request.PartialResultToken, observable); return(observable); }
public IProgressObserver <IEnumerable <TItem> > For <TResponse, TItem>(IPartialItemsRequest <TResponse, TItem> request, CancellationToken cancellationToken) where TResponse : IEnumerable <TItem> { if (request.PartialResultToken == null) { return(ProgressObserver <IEnumerable <TItem> > .Noop); } if (_activeObservers.TryGetValue(request.PartialResultToken, out var o) && o is IProgressObserver <IEnumerable <TItem> > observer) { return(observer); } observer = new ProgressObserver <IEnumerable <TItem> >(request.PartialResultToken, _router, _serializer, cancellationToken, () => _activeObservers.TryRemove(request.PartialResultToken, out var disposable)); _activeObservers.TryAdd(request.PartialResultToken, observer); return(observer); }
public IRequestProgressObservable <IEnumerable <TItem>, TResponse> MonitorUntil <TResponse, TItem>( IPartialItemsRequest <TResponse, TItem> request, Func <IEnumerable <TItem>, TResponse> factory, CancellationToken cancellationToken ) where TResponse : IEnumerable <TItem> { request.PartialResultToken ??= new ProgressToken(Guid.NewGuid().ToString()); if (_activeObservables.TryGetValue(request.PartialResultToken, out var o) && o is IRequestProgressObservable <IEnumerable <TItem>, TResponse> observable) { return(observable); } observable = new PartialItemsRequestProgressObservable <TItem, TResponse>( _serializer, request.PartialResultToken, MakeRequest(request), factory, cancellationToken, () => _activeObservables.TryRemove(request.PartialResultToken, out var disposable) ); _activeObservables.TryAdd(request.PartialResultToken, observable); return(observable); }
public IRequestProgressObservable <IEnumerable <TItem>, IEnumerable <TItem> > MonitorUntil <TItem>( IPartialItemsRequest <IEnumerable <TItem>, TItem> request, CancellationToken cancellationToken ) { request.SetPartialResultToken(); if (_activeObservables.TryGetValue(request.PartialResultToken !, out var o) && o is IRequestProgressObservable <IEnumerable <TItem>, IEnumerable <TItem> > observable) { return(observable); } observable = new PartialItemsRequestProgressObservable <TItem, IEnumerable <TItem> >( _serializer, request.PartialResultToken, MakeRequest(request), x => x, cancellationToken, () => _activeObservables.TryRemove(request.PartialResultToken, out _) ); _activeObservables.TryAdd(request.PartialResultToken, observable); return(observable); }
public IRequestProgressObservable <IEnumerable <TItem>, TResponse> MonitorUntil <TResponse, TItem>( IPartialItemsRequest <TResponse, TItem> request, Func <IEnumerable <TItem>, TResponse> factory, CancellationToken cancellationToken ) where TResponse : IEnumerable <TItem>? {