Example #1
0
        internal IReadOnlyList <NormalizedHttpRangeItem> Normalize(long totalLength)
        {
            var rangeItems = RangeItems.Select(x => x.Normalize(totalLength))
                             .OrderBy(x => x.From).ThenBy(x => x.To);
            var result = new List <NormalizedHttpRangeItem>();
            NormalizedHttpRangeItem currentRangeItem = null;
            long currentTo = 0;

            foreach (var rangeItem in rangeItems)
            {
                if (currentRangeItem == null)
                {
                    currentRangeItem = rangeItem;
                    currentTo        = rangeItem.To;
                }
                else
                {
                    var currentFrom = rangeItem.From;
                    if (currentFrom <= (currentTo + 1))
                    {
                        currentRangeItem = new NormalizedHttpRangeItem(currentRangeItem.From, rangeItem.To);
                    }
                    else
                    {
                        result.Add(currentRangeItem);
                        currentRangeItem = rangeItem;
                        currentTo        = rangeItem.To;
                    }
                }
            }
            if (currentRangeItem != null)
            {
                result.Add(currentRangeItem);
            }
            return(result);
        }
 internal IReadOnlyList<NormalizedHttpRangeItem> Normalize(long totalLength)
 {
     var rangeItems = RangeItems.Select(x => x.Normalize(totalLength))
         .OrderBy(x => x.From).ThenBy(x => x.To);
     var result = new List<NormalizedHttpRangeItem>();
     NormalizedHttpRangeItem currentRangeItem = null;
     long currentTo = 0;
     foreach (var rangeItem in rangeItems)
     {
         if (currentRangeItem == null)
         {
             currentRangeItem = rangeItem;
             currentTo = rangeItem.To;
         }
         else
         {
             var currentFrom = rangeItem.From;
             if (currentFrom <= (currentTo + 1))
             {
                 currentRangeItem = new NormalizedHttpRangeItem(currentRangeItem.From, rangeItem.To);
             }
             else
             {
                 result.Add(currentRangeItem);
                 currentRangeItem = rangeItem;
                 currentTo = rangeItem.To;
             }
         }
     }
     if (currentRangeItem != null)
         result.Add(currentRangeItem);
     return result;
 }