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.
27 lines
810 B
Kotlin
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)
|
|
}
|
|
}
|