예제 #1
0
 private void AddIfNeeded(HashSet <Checksum> checksums, Checksum checksum)
 {
     if (!_assetProvider.EnsureCacheEntryIfExists(checksum))
     {
         checksums.Add(checksum);
     }
 }
            private static async Task <Dictionary <DocumentId, DocumentStateChecksums> > GetDocumentMapAsync(AssetProvider assetProvider, HashSet <Checksum> documents, CancellationToken cancellationToken)
            {
                var map = new Dictionary <DocumentId, DocumentStateChecksums>();

                var documentChecksums = await assetProvider.GetAssetsAsync <DocumentStateChecksums>(documents, cancellationToken).ConfigureAwait(false);

                var infos = await assetProvider.GetAssetsAsync <DocumentInfo.DocumentAttributes>(documentChecksums.Select(p => p.Item2.Info), cancellationToken).ConfigureAwait(false);

                foreach (var kv in documentChecksums)
                {
                    Debug.Assert(assetProvider.EnsureCacheEntryIfExists(kv.Item2.Info), "Expected the prior call to GetAssetsAsync to obtain all items for this loop.");

                    var info = await assetProvider.GetAssetAsync <DocumentInfo.DocumentAttributes>(kv.Item2.Info, cancellationToken).ConfigureAwait(false);

                    map.Add(info.Id, kv.Item2);
                }

                return(map);
            }