in hot-reload-orchestration/src/main/kotlin/org/jetbrains/compose/reload/orchestration/orchestrationMessageEncoders.kt [243:267]
override fun decode(data: ByteArray): Try<TestEvent> {
if (data.isEmpty()) return TestEvent(null).toLeft()
return data.tryDecode {
val method = readString()
if (method == PAYLOAD_ENCODING_METHOD_JIOS) {
val payload = readFrame().decodeSerializableObject()
return@tryDecode TestEvent(payload)
}
if (method == PAYLOAD_ENCODING_METHOD_ENCODED) {
val messageId = readOptionalFrame()?.let(::OrchestrationMessageId)
val classifier = OrchestrationMessageClassifier(readString(), readString())
val encoder = messageEncoderOf(classifier) ?: error("Missing encoder for '$classifier'")
return@tryDecode TestEvent(encoder.decode(readFrame()).getOrThrow()).also { message ->
if (message.payload is OrchestrationMessage && messageId != null) {
message.payload.messageId = messageId
}
}
}
error("Unknown method: $method")
}
}