public async Task SynchronizeAssetsAsync(IEnumerable <Checksum> checksums, CancellationToken cancellationToken) { // if caller wants to get different kind of assets at once, he needs to first sync asserts and use // GetAssetAsync to get those. var syncer = new ChecksumSynchronizer(this); await syncer.SynchronizeAssetsAsync(checksums, cancellationToken).ConfigureAwait(false); }
public async Task <List <ValueTuple <Checksum, T> > > GetAssetsAsync <T>( IEnumerable <Checksum> checksums, CancellationToken cancellationToken ) { // this only works when caller wants to get same kind of assets at once // bulk synchronize checksums first var syncer = new ChecksumSynchronizer(this); await syncer.SynchronizeAssetsAsync(checksums, cancellationToken).ConfigureAwait(false); var list = new List <ValueTuple <Checksum, T> >(); foreach (var checksum in checksums) { list.Add( ValueTuple.Create( checksum, await GetAssetAsync <T>(checksum, cancellationToken).ConfigureAwait(false) ) ); } return(list); }