/// <summary>
        /// Updates the progress for the given segment
        /// </summary>
        /// <param name="segmentProgress">The segment progress.</param>
        internal void SetSegmentProgress(SegmentUploadProgress segmentProgress)
        {
            lock (_segmentProgress)
            {
                var previousProgress = _segmentProgress[segmentProgress.SegmentNumber];

                //calculate how many additional bytes we have uploaded so far
                //the caveat here is that if a segment failed, we need to report it as 0 bytes uploaded (even though we did upload something; upon resume, we will reupload from scratch)
                long deltaLength = segmentProgress.IsFailed ? 0 : segmentProgress.UploadedByteCount;
                deltaLength -= previousProgress.IsFailed ? 0 : previousProgress.UploadedByteCount;

                this.UploadedByteCount += deltaLength;

                _segmentProgress[segmentProgress.SegmentNumber] = segmentProgress;
            }
        }
예제 #2
0
        /// <summary>
        /// Updates the progress for the given segment
        /// </summary>
        /// <param name="segmentProgress">The segment progress.</param>
        internal void SetSegmentProgress(SegmentUploadProgress segmentProgress)
        {
            lock (_segmentProgress)
            {
                var previousProgress = _segmentProgress[segmentProgress.SegmentNumber];

                //calculate how many additional bytes we have uploaded so far
                //the caveat here is that if a segment failed, we need to report it as 0 bytes uploaded (even though we did upload something; upon resume, we will reupload from scratch)
                long deltaLength = segmentProgress.IsFailed ? 0 : segmentProgress.UploadedByteCount;
                deltaLength -= previousProgress.IsFailed ? 0 : previousProgress.UploadedByteCount;

                this.UploadedByteCount += deltaLength;

                _segmentProgress[segmentProgress.SegmentNumber] = segmentProgress;
            }
        }