You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
index/src/main/kotlin/moe/odango/index/utils/XMLOutputStreamReader.kt

27 lines
810 B
Kotlin

package moe.odango.index.utils
import com.fasterxml.aalto.AsyncByteArrayFeeder
import com.fasterxml.aalto.AsyncXMLStreamReader
import com.fasterxml.aalto.stax.InputFactoryImpl
import java.io.OutputStream
class XMLOutputStreamReader(private val afterWrite: AsyncXMLStreamReader<*>.() -> Unit) : OutputStream() {
private val reader = InputFactoryImpl().createAsyncForByteArray()!!
private val feeder = reader.inputFeeder!!
override fun write(b: ByteArray) {
write(b, 0, b.size)
}
override fun write(b: ByteArray, off: Int, len: Int) {
feeder.feedInput(b, off, len)
while (reader.next() != AsyncXMLStreamReader.EVENT_INCOMPLETE) {
afterWrite(reader)
}
}
override fun write(b: Int) {
write(byteArrayOf(b.toByte()), 0, 1)
}
}