public async Task SynchronizeGlobalAssetsAsync(Checksum[] checksums) { using (RoslynLogger.LogBlock(FunctionId.RemoteHostService_SynchronizeGlobalAssetsAsync, Checksum.GetChecksumsLogInfo, checksums, CancellationToken)) { try { var assets = await RoslynServices.AssetService.GetAssetsAsync <object>(checksums, CancellationToken).ConfigureAwait(false); foreach (var asset in assets) { AssetStorage.TryAddGlobalAsset(asset.Item1, asset.Item2); } } catch (IOException) { // stream to send over assets has closed before we // had chance to check cancellation } catch (OperationCanceledException) { // rpc connection has closed. // this can happen if client side cancelled the // operation } } }
public async Task SynchronizeGlobalAssetsAsync(Checksum[] checksums, CancellationToken cancellationToken) { using (RoslynLogger.LogBlock(FunctionId.RemoteHostService_SynchronizeGlobalAssetsAsync, Checksum.GetChecksumsLogInfo, checksums, cancellationToken)) { var assets = await RoslynServices.AssetService.GetAssetsAsync <object>(checksums, cancellationToken).ConfigureAwait(false); foreach (var asset in assets) { AssetStorage.TryAddGlobalAsset(asset.Item1, asset.Item2); } } }
public Task SynchronizeGlobalAssetsAsync(PinnedSolutionInfo solutionInfo, Checksum[] checksums, CancellationToken cancellationToken) { return(RunServiceAsync(async() => { using (RoslynLogger.LogBlock(FunctionId.RemoteHostService_SynchronizeGlobalAssetsAsync, Checksum.GetChecksumsLogInfo, checksums, cancellationToken)) { var assetProvider = SolutionService.CreateAssetProvider(solutionInfo, AssetStorage); var assets = await assetProvider.GetAssetsAsync <object>(checksums, cancellationToken).ConfigureAwait(false); foreach (var(checksum, value) in assets) { AssetStorage.TryAddGlobalAsset(checksum, value); } } }, cancellationToken)); }