NuGet.Services.Metadata.Catalog.AppendOnlyCatalogWriter.SavePages C# (CSharp) Method

SavePages() protected method

protected SavePages ( System.Guid commitId, System.DateTime commitTimeStamp, CatalogItemSummary>.IDictionary itemEntries, CancellationToken cancellationToken ) : CatalogItemSummary>>.Task
commitId System.Guid
commitTimeStamp System.DateTime
itemEntries CatalogItemSummary>.IDictionary
cancellationToken System.Threading.CancellationToken
return CatalogItemSummary>>.Task
        protected override async Task<IDictionary<string, CatalogItemSummary>> SavePages(Guid commitId, DateTime commitTimeStamp, IDictionary<string, CatalogItemSummary> itemEntries, CancellationToken cancellationToken)
        {
            IDictionary<string, CatalogItemSummary> pageEntries;
            if (_first && !_append)
            {
                pageEntries = new Dictionary<string, CatalogItemSummary>();
                _first = false;
            }
            else
            {
                pageEntries = await LoadIndexResource(RootUri, cancellationToken);
            }

            bool isExistingPage;
            Uri pageUri = GetPageUri(pageEntries, itemEntries.Count, out isExistingPage);

            var items = new Dictionary<string, CatalogItemSummary>(itemEntries);

            if (isExistingPage)
            {
                IDictionary<string, CatalogItemSummary> existingItemEntries = await LoadIndexResource(pageUri, cancellationToken);
                foreach (var entry in existingItemEntries)
                {
                    items.Add(entry.Key, entry.Value);
                }
            }

            await SaveIndexResource(pageUri, Schema.DataTypes.CatalogPage, commitId, commitTimeStamp, items, RootUri, null, null, cancellationToken);

            pageEntries[pageUri.AbsoluteUri] = new CatalogItemSummary(Schema.DataTypes.CatalogPage, commitId, commitTimeStamp, items.Count);

            return pageEntries;
        }