mirror of
https://github.com/InsanusMokrassar/MicroUtils.git
synced 2024-06-30 21:37:36 +00:00
34 lines
841 B
Kotlin
34 lines
841 B
Kotlin
|
package dev.inmo.micro_utils.ktor.common
|
||
|
|
||
|
import dev.inmo.micro_utils.common.MPPFile
|
||
|
import io.ktor.utils.io.bits.Memory
|
||
|
import io.ktor.utils.io.bits.loadByteArray
|
||
|
import io.ktor.utils.io.core.Input
|
||
|
import okio.FileSystem
|
||
|
import okio.Path
|
||
|
|
||
|
private class FileInput(
|
||
|
private val path: Path
|
||
|
) : Input() {
|
||
|
private val openedFile = FileSystem.SYSTEM.openReadOnly(path)
|
||
|
override fun closeSource() {
|
||
|
openedFile.close()
|
||
|
}
|
||
|
|
||
|
override fun fill(destination: Memory, offset: Int, length: Int): Int {
|
||
|
val byteArray = ByteArray(length)
|
||
|
val read = openedFile.read(offset.toLong(), byteArray, 0, length)
|
||
|
destination.loadByteArray(
|
||
|
offset,
|
||
|
byteArray,
|
||
|
count = length
|
||
|
)
|
||
|
return read
|
||
|
}
|
||
|
}
|
||
|
|
||
|
actual fun MPPFile.input(): Input {
|
||
|
return FileInput(this)
|
||
|
}
|
||
|
|