Пример #1
0
        public override IEnumerable <StreamExtent> GetExtentsInRange(long start, long count)
        {
            CheckDisposed();

            long maxCount = Math.Min(Length, start + count) - start;

            if (maxCount < 0)
            {
                return(new StreamExtent[0]);
            }

            var parentExtents = _parentDiskStream.GetExtentsInRange(_diskOffset + start, maxCount);

            parentExtents = StreamExtent.Offset(parentExtents, -_diskOffset);

            var result = StreamExtent.Union(LayerExtents(start, maxCount), parentExtents);

            result = StreamExtent.Intersect(result, new StreamExtent[] { new StreamExtent(start, maxCount) });
            return(result);
        }