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) } }