/// <summary> /// Populates the specified metadata. /// </summary> /// <param name="metadata">The metadata.</param> private void Populate(TransferFolderMetadata metadata) { this.TotalFileLength = metadata.TotalFileBytes; this.TotalFileCount = metadata.FileCount; _fileProgress = new List <TransferProgress>(this.TotalFileCount); _progressBacklog = new ConcurrentQueue <TransferProgress>(); foreach (var fileMetadata in metadata.Files) { var toAdd = new TransferProgress(fileMetadata); if (fileMetadata.Status == SegmentTransferStatus.Complete) { this.TransferredByteCount += fileMetadata.FileLength; this.TransferredFileCount++; toAdd.TransferredByteCount = toAdd.TotalFileLength; foreach (var segment in toAdd._segmentProgress) { segment.TransferredByteCount = segment.Length; } } _fileProgress.Add(toAdd); } }
internal void SetSegmentProgress(TransferProgress segmentProgress) { _progressBacklog.Enqueue(segmentProgress); }