in blockmap/src/main/kotlin/com/jetbrains/plugin/blockmap/core/ChunkMerger.kt [23:34]
open fun merge(output: OutputStream, newChunkDataSource: Iterator<ByteArray>) {
RandomAccessFile(oldFile, "r").use { oldFileRAF ->
output.buffered().use { bufferedOutput ->
val oldMap = oldBlockMap.chunks.associateBy { it.hash }
for (newChunk in newBlockMap.chunks) {
val oldChunk = oldMap[newChunk.hash]
if (oldChunk != null) downloadChunkFromOldData(oldChunk, oldFileRAF, bufferedOutput)
else downloadChunkFromNewData(newChunk, newChunkDataSource, bufferedOutput)
}
}
}
}