in app/streamcomponents/MatrixStoreFileSourceWithRanges.scala [36:64]
def getNextDownloadRange(prevBytesPtr:Long): Option[(Long,Long)] = {
//find the chunk that contains the prevBytesPtr location
def checkChunk(toCheck:RangeHeader, remainder:Seq[RangeHeader]):Option[(Long,Long)] = {
outerLogger.debug(s"checkChunk: $toCheck")
val rangeToCheck = toCheck.getAbsolute(sourceFileSize)
outerLogger.debug(s"rangeToCheck: $rangeToCheck, prevBytesPtr: $prevBytesPtr")
if(prevBytesPtr+1 < rangeToCheck._2){
Some((rangeToCheck._1, rangeToCheck._2))
} else {
if(remainder.isEmpty){
None
} else {
checkChunk(remainder.head, remainder.tail)
}
}
}
if(ranges.isEmpty) {
if(prevBytesPtr>=sourceFileSize){
None
} else if(prevBytesPtr+bufferSize<sourceFileSize){
Some((prevBytesPtr, prevBytesPtr+bufferSize))
} else {
Some((prevBytesPtr, sourceFileSize))
}
} else {
checkChunk(ranges.head, ranges.tail)
}
}