70 GetBufferedRange&& getBufferedRange,
71 ReadFromReservoir&& readFromReservoir,
72 FillReservoir&& fillReservoir)
76 const auto bufferedRange = getBufferedRange();
78 if (bufferedRange.contains (rangeToRead.
getStart()))
81 readFromReservoir (rangeToReadInBuffer);
82 rangeToRead.
setStart (rangeToReadInBuffer.getEnd());
86 fillReservoir (rangeToRead.
getStart());
88 const auto newRange = getBufferedRange();
90 if (newRange.isEmpty() || ! newRange.contains (rangeToRead.
getStart()))