ObservableMutableMetaSerializer

This commit is contained in:
Alexander Nozik 2024-09-10 07:47:53 +03:00
parent e5902c0bfe
commit de9ca6e009
2 changed files with 18 additions and 0 deletions
CHANGELOG.md
dataforge-meta/src/commonMain/kotlin/space/kscience/dataforge/meta

@ -4,6 +4,7 @@
### Added
- Coroutine exception logging in context
- ObservableMutableMetaSerializer
### Changed
- Simplify inheritance logic in `MutableTypedMeta`

@ -45,4 +45,21 @@ public object MutableMetaSerializer : KSerializer<MutableMeta> {
override fun serialize(encoder: Encoder, value: MutableMeta) {
encoder.encodeSerializableValue(MetaSerializer, value)
}
}
/**
* A serializer for [ObservableMutableMeta]
*/
public object ObservableMutableMetaSerializer : KSerializer<ObservableMutableMeta> {
override val descriptor: SerialDescriptor = MetaSerializer.descriptor
override fun deserialize(decoder: Decoder): ObservableMutableMeta {
val meta = decoder.decodeSerializableValue(MetaSerializer)
return ((meta as? MutableMeta) ?: meta.toMutableMeta()).asObservable()
}
override fun serialize(encoder: Encoder, value: ObservableMutableMeta) {
encoder.encodeSerializableValue(MetaSerializer, value)
}
}