KByteArrayInputStream.kt
package org.knio.core.io
import org.knio.core.context.KnioContext
import org.knio.core.context.getKnioContext
import java.nio.ByteBuffer
class KByteArrayInputStream(
private val data: ByteArray,
context: KnioContext
): KInputStream(context) {
companion object {
suspend fun open(data: ByteArray): KByteArrayInputStream {
return KByteArrayInputStream(data, getKnioContext())
}
}
private var position = 0
override suspend fun read(b: ByteBuffer): Int {
if (position >= data.size) {
return -1
}
val remaining = b.remaining()
if (remaining == 0) {
return 0
}
val length = minOf(remaining, data.size - position)
b.put(data, position, length)
position += length
return length
}
}