def getNextDownloadRange()

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)
    }
  }