Minor fix to multipart envelope

This commit is contained in:
Alexander Nozik 2019-11-05 21:42:29 +03:00
parent 5265c0e5ab
commit ff59c14c17

View File

@ -17,6 +17,9 @@ object EnvelopeParts {
const val PARTS_DATA_TYPE = "envelope.parts" const val PARTS_DATA_TYPE = "envelope.parts"
} }
/**
* Append multiple serialized envelopes to the data block. Previous data is erased if it was present
*/
fun EnvelopeBuilder.parts(formatFactory: EnvelopeFormatFactory, envelopes: Collection<Envelope>) { fun EnvelopeBuilder.parts(formatFactory: EnvelopeFormatFactory, envelopes: Collection<Envelope>) {
dataType = PARTS_DATA_TYPE dataType = PARTS_DATA_TYPE
meta { meta {
@ -36,7 +39,10 @@ fun EnvelopeBuilder.parts(formatFactory: EnvelopeFormatFactory, envelopes: Colle
fun EnvelopeBuilder.parts(formatFactory: EnvelopeFormatFactory, builder: suspend SequenceScope<Envelope>.() -> Unit) = fun EnvelopeBuilder.parts(formatFactory: EnvelopeFormatFactory, builder: suspend SequenceScope<Envelope>.() -> Unit) =
parts(formatFactory, sequence(builder).toList()) parts(formatFactory, sequence(builder).toList())
fun Envelope.parts(io: IOPlugin = Global.plugins.fetch(IOPlugin)): Sequence<Envelope> { /**
* If given envelope supports multipart data, return a sequence of those parts (could be empty). Otherwise return null.
*/
fun Envelope.parts(io: IOPlugin = Global.plugins.fetch(IOPlugin)): Sequence<Envelope>? {
return when (dataType) { return when (dataType) {
PARTS_DATA_TYPE -> { PARTS_DATA_TYPE -> {
val size = meta[SIZE_KEY].int ?: error("Unsized parts not supported yet") val size = meta[SIZE_KEY].int ?: error("Unsized parts not supported yet")
@ -55,6 +61,6 @@ fun Envelope.parts(io: IOPlugin = Global.plugins.fetch(IOPlugin)): Sequence<Enve
} ?: emptySequence() } ?: emptySequence()
} }
} }
else -> emptySequence() else -> null
} }
} }