Open tribbloid opened 4 years ago
BTW this is my implementation:
override def read(b: Array[Byte], off: Int, len: Int): Int = {
val srcArray = in.internalByteArray()
val srcBuffer = in.internalByteBuffer()
val _len =
if (srcArray != null) Math.min(srcArray.length, len)
else if (srcBuffer != null) Math.min(srcBuffer.remaining(), len)
else len
val pos = in.getPos
try {
in.readFully(b, off, _len)
_len
} catch {
// inefficient way
case e: RuntimeException =>
in.setPos(pos)
(off until (off + len)).foreach { i =>
try {
val next = in.readByte()
b.update(i, next)
} catch {
case _: EOFException | _: RuntimeException =>
return i
}
}
len
}
}
Not sure if shorter version is possible
Written in scala but should be interoperable with kotlin:
looks simple right?
This should be a low level mistake