private NuGetSearchServiceReconnector(IServiceBroker serviceBroker, JoinableTaskFactory jtf, INuGetSearchService initialService) { if (serviceBroker == null) { throw new ArgumentNullException(nameof(serviceBroker)); } if (jtf == null) { throw new ArgumentNullException(nameof(jtf)); } if (initialService == null) { throw new ArgumentNullException(nameof(initialService)); } _disposedTokenSource = new CancellationTokenSource(); _jtf = jtf; _serviceBroker = serviceBroker; _service = initialService; _serviceBroker.AvailabilityChanged += AvailabilityChanged; _object = new ManagedNuGetSearchService(this); }
private void OnAvailabilityChanged(object sender, BrokeredServicesChangedEventArgs e) { NuGetUIThreadHelper.JoinableTaskFactory.RunAsync(async() => { _searchService?.Dispose(); _searchService = await GetSearchServiceAsync(CancellationToken.None); }).PostOnFailure(nameof(PackageItemLoader), nameof(OnAvailabilityChanged)); }
private async ValueTask <INuGetSearchService> GetSearchServiceAsync(CancellationToken cancellationToken) { #pragma warning disable ISB001 // Dispose of proxies INuGetSearchService searchService = await _serviceBroker.GetProxyAsync <INuGetSearchService>(NuGetServices.SearchService, cancellationToken); #pragma warning restore ISB001 // Dispose of proxies Assumes.NotNull(searchService); return(searchService); }
private async ValueTask InitializeAsync(INuGetSearchService searchService = null) { _searchFilter = new SearchFilter(includePrerelease: _includePrerelease) { SupportedFrameworks = await _context.GetSupportedFrameworksAsync() }; _searchService = searchService ?? await GetSearchServiceAsync(CancellationToken.None); _serviceBroker.AvailabilityChanged += OnAvailabilityChanged; }
internal async Task AvailabilityChangedAsync() { try { _service?.Dispose(); _service = await _serviceBroker.GetProxyAsync <INuGetSearchService>(NuGetServices.SearchService, _disposedTokenSource.Token); } catch (OperationCanceledException) when(_disposedTokenSource.Token.IsCancellationRequested) { // Expected } }
// For unit testing purposes internal static async ValueTask <PackageItemLoader> CreateAsync( IServiceBroker serviceBroker, PackageLoadContext context, IReadOnlyCollection <PackageSourceContextInfo> packageSources, ContractItemFilter itemFilter, INuGetSearchService searchService, string searchText = null, bool includePrerelease = true, bool useRecommender = false) { var itemLoader = new PackageItemLoader( serviceBroker, context, packageSources, itemFilter, searchText, includePrerelease, useRecommender); await itemLoader.InitializeAsync(searchService); return(itemLoader); }
internal async Task AvailabilityChangedAsync() { _service?.Dispose(); _service = await _serviceBroker.GetProxyAsync <INuGetSearchService>(NuGetServices.SearchService, _disposedTokenSource.Token); }