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
|
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 bintrayRepo by extra("dataforge")
|
||||||
val githubProject by extra("dataforge-core")
|
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) }
|
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()
|
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()
|
fun <T : Any> IOFormat<T>.readBytes(array: ByteArray): T = buildPacket { writeFully(array) }.readObject()
|
||||||
|
|
||||||
object DoubleIOFormat : IOFormat<Double>, IOFormatFactory<Double> {
|
object DoubleIOFormat : IOFormat<Double>, IOFormatFactory<Double> {
|
||||||
|
@ -38,15 +38,15 @@ class TaggedEnvelopeFormat(
|
|||||||
|
|
||||||
override fun Output.writeEnvelope(envelope: Envelope, metaFormatFactory: MetaFormatFactory, formatMeta: Meta) {
|
override fun Output.writeEnvelope(envelope: Envelope, metaFormatFactory: MetaFormatFactory, formatMeta: Meta) {
|
||||||
val metaFormat = metaFormatFactory.invoke(formatMeta, io.context)
|
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) {
|
val actualSize: ULong = if (envelope.data == null) {
|
||||||
0u
|
0u
|
||||||
} else {
|
} else {
|
||||||
envelope.data?.size ?: ULong.MAX_VALUE
|
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())
|
writePacket(tag.toBytes())
|
||||||
writeFully(metaBytes)
|
writePacket(metaBytes)
|
||||||
writeText("\r\n")
|
writeText("\r\n")
|
||||||
envelope.data?.read { copyTo(this@writeEnvelope) }
|
envelope.data?.read { copyTo(this@writeEnvelope) }
|
||||||
flush()
|
flush()
|
||||||
|
@ -37,10 +37,10 @@ class TaglessEnvelopeFormat(
|
|||||||
|
|
||||||
//Printing meta
|
//Printing meta
|
||||||
if (!envelope.meta.isEmpty()) {
|
if (!envelope.meta.isEmpty()) {
|
||||||
val metaBytes = metaFormat.writeBytes(envelope.meta)
|
val metaBytes = metaFormat.writePacket(envelope.meta)
|
||||||
writeProperty(META_LENGTH_PROPERTY, metaBytes.size)
|
writeProperty(META_LENGTH_PROPERTY, metaBytes.remaining)
|
||||||
writeText(metaStart + "\r\n")
|
writeText(metaStart + "\r\n")
|
||||||
writeFully(metaBytes)
|
writePacket(metaBytes)
|
||||||
writeText("\r\n")
|
writeText("\r\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user