Remove use of direct Input to ByteArray conversions due to bugs in kotlinx.io.
This commit is contained in:
parent
41d0cdb2b1
commit
d10bd40763
@ -6,7 +6,7 @@ plugins {
|
||||
id("scientifik.publish") version "0.2.2" apply false
|
||||
}
|
||||
|
||||
val dataforgeVersion by extra("0.1.5-dev-2")
|
||||
val dataforgeVersion by extra("0.1.5-dev-3")
|
||||
|
||||
val bintrayRepo by extra("dataforge")
|
||||
val githubProject by extra("dataforge-core")
|
||||
|
@ -79,8 +79,10 @@ inline fun buildPacketWithoutPool(headerSizeHint: Int = 0, block: BytePacketBuil
|
||||
}
|
||||
|
||||
fun <T : Any> IOFormat<T>.writePacket(obj: T): ByteReadPacket = buildPacket { writeObject(obj) }
|
||||
//TODO Double buffer copy. fix all that with IO-2
|
||||
|
||||
@Deprecated("Not to be used outside tests due to double buffer write")
|
||||
fun <T : Any> IOFormat<T>.writeBytes(obj: T): ByteArray = buildPacket { writeObject(obj) }.readBytes()
|
||||
@Deprecated("Not to be used outside tests due to double buffer write")
|
||||
fun <T : Any> IOFormat<T>.readBytes(array: ByteArray): T = buildPacket { writeFully(array) }.readObject()
|
||||
|
||||
object DoubleIOFormat : IOFormat<Double>, IOFormatFactory<Double> {
|
||||
|
@ -38,15 +38,15 @@ class TaggedEnvelopeFormat(
|
||||
|
||||
override fun Output.writeEnvelope(envelope: Envelope, metaFormatFactory: MetaFormatFactory, formatMeta: Meta) {
|
||||
val metaFormat = metaFormatFactory.invoke(formatMeta, io.context)
|
||||
val metaBytes = metaFormat.writeBytes(envelope.meta)
|
||||
val metaBytes = metaFormat.writePacket(envelope.meta)
|
||||
val actualSize: ULong = if (envelope.data == null) {
|
||||
0u
|
||||
} else {
|
||||
envelope.data?.size ?: ULong.MAX_VALUE
|
||||
}
|
||||
val tag = Tag(metaFormatFactory.key, metaBytes.size.toUInt() + 2u, actualSize)
|
||||
val tag = Tag(metaFormatFactory.key, metaBytes.remaining.toUInt() + 2u, actualSize)
|
||||
writePacket(tag.toBytes())
|
||||
writeFully(metaBytes)
|
||||
writePacket(metaBytes)
|
||||
writeText("\r\n")
|
||||
envelope.data?.read { copyTo(this@writeEnvelope) }
|
||||
flush()
|
||||
|
@ -37,10 +37,10 @@ class TaglessEnvelopeFormat(
|
||||
|
||||
//Printing meta
|
||||
if (!envelope.meta.isEmpty()) {
|
||||
val metaBytes = metaFormat.writeBytes(envelope.meta)
|
||||
writeProperty(META_LENGTH_PROPERTY, metaBytes.size)
|
||||
val metaBytes = metaFormat.writePacket(envelope.meta)
|
||||
writeProperty(META_LENGTH_PROPERTY, metaBytes.remaining)
|
||||
writeText(metaStart + "\r\n")
|
||||
writeFully(metaBytes)
|
||||
writePacket(metaBytes)
|
||||
writeText("\r\n")
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user