General IO builder
This commit is contained in:
parent
5480d90a36
commit
8f5a20bb22
@ -1,6 +0,0 @@
|
|||||||
package hep.dataforge.io
|
|
||||||
|
|
||||||
import kotlinx.io.core.Input
|
|
||||||
|
|
||||||
//TODO replace by abstraction
|
|
||||||
typealias Binary = Input
|
|
@ -8,8 +8,8 @@ import kotlinx.io.core.readText
|
|||||||
import kotlinx.io.core.writeText
|
import kotlinx.io.core.writeText
|
||||||
|
|
||||||
object BinaryMetaFormat : MetaFormat {
|
object BinaryMetaFormat : MetaFormat {
|
||||||
override fun write(meta: Meta, out: Output) {
|
override fun write(obj: Meta, out: Output) {
|
||||||
out.writeMeta(meta)
|
out.writeMeta(obj)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun read(input: Input): Meta {
|
override fun read(input: Input): Meta {
|
||||||
|
@ -3,10 +3,11 @@ package hep.dataforge.io
|
|||||||
import hep.dataforge.meta.Meta
|
import hep.dataforge.meta.Meta
|
||||||
import hep.dataforge.meta.get
|
import hep.dataforge.meta.get
|
||||||
import hep.dataforge.meta.string
|
import hep.dataforge.meta.string
|
||||||
|
import kotlinx.io.core.Input
|
||||||
|
|
||||||
interface Envelope {
|
interface Envelope {
|
||||||
val meta: Meta
|
val meta: Meta
|
||||||
val data: Binary?
|
val data: Input?
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
@ -18,9 +19,16 @@ interface Envelope {
|
|||||||
const val ENVELOPE_DATA_TYPE_KEY = "$ENVELOPE_NODE.dataType"
|
const val ENVELOPE_DATA_TYPE_KEY = "$ENVELOPE_NODE.dataType"
|
||||||
const val ENVELOPE_DESCRIPTION_KEY = "$ENVELOPE_NODE.description"
|
const val ENVELOPE_DESCRIPTION_KEY = "$ENVELOPE_NODE.description"
|
||||||
//const val ENVELOPE_TIME_KEY = "@envelope.time"
|
//const val ENVELOPE_TIME_KEY = "@envelope.time"
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class SimpleEnvelope(override val meta: Meta, val dataProvider: () -> Input?) : Envelope{
|
||||||
|
override val data: Input?
|
||||||
|
get() = dataProvider()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The purpose of the envelope
|
* The purpose of the envelope
|
||||||
*
|
*
|
||||||
@ -41,3 +49,4 @@ val Envelope.dataType: String? get() = meta[Envelope.ENVELOPE_DATA_TYPE_KEY].str
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
val Envelope.description: String? get() = meta[Envelope.ENVELOPE_DESCRIPTION_KEY].string
|
val Envelope.description: String? get() = meta[Envelope.ENVELOPE_DESCRIPTION_KEY].string
|
||||||
|
|
||||||
|
@ -0,0 +1,10 @@
|
|||||||
|
package hep.dataforge.io
|
||||||
|
|
||||||
|
import kotlinx.io.core.Input
|
||||||
|
import kotlinx.io.core.Output
|
||||||
|
|
||||||
|
|
||||||
|
interface IOFormat<T : Any> {
|
||||||
|
fun write(obj: T, out: Output)
|
||||||
|
fun read(input: Input): T
|
||||||
|
}
|
@ -14,8 +14,8 @@ import kotlinx.serialization.json.*
|
|||||||
|
|
||||||
object JsonMetaFormat : MetaFormat {
|
object JsonMetaFormat : MetaFormat {
|
||||||
|
|
||||||
override fun write(meta: Meta, out: Output) {
|
override fun write(obj: Meta, out: Output) {
|
||||||
val str = meta.toJson().toString()
|
val str = obj.toJson().toString()
|
||||||
out.writeText(str)
|
out.writeText(str)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,15 +1,14 @@
|
|||||||
package hep.dataforge.io
|
package hep.dataforge.io
|
||||||
|
|
||||||
import hep.dataforge.meta.Meta
|
import hep.dataforge.meta.Meta
|
||||||
import kotlinx.io.core.*
|
import kotlinx.io.core.BytePacketBuilder
|
||||||
|
import kotlinx.io.core.ByteReadPacket
|
||||||
|
import kotlinx.io.core.toByteArray
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A format for meta serialization
|
* A format for meta serialization
|
||||||
*/
|
*/
|
||||||
interface MetaFormat {
|
interface MetaFormat: IOFormat<Meta>
|
||||||
fun write(meta: Meta, out: Output)
|
|
||||||
fun read(input: Input): Meta
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ServiceLoader compatible factory
|
* ServiceLoader compatible factory
|
||||||
|
Loading…
Reference in New Issue
Block a user