2026-09-07 15:11:33 +08:00
|
|
|
package com.gzzn.omms.msgexchange.codec
|
2026-09-06 16:13:50 +08:00
|
|
|
|
2026-09-07 15:11:33 +08:00
|
|
|
import com.gzzn.omms.msgexchange.domain.DecodedMessage
|
|
|
|
|
import com.gzzn.omms.msgexchange.domain.ErrorClass
|
2026-09-06 16:13:50 +08:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* ACMA-8 流程 2:解码失败分类(矩阵/状态机:MALFORMED 不重试;CODEC_ERROR 可一键重放)。
|
|
|
|
|
*/
|
|
|
|
|
data class DecodeFailure(val errorClass: ErrorClass, val detail: String)
|
|
|
|
|
|
|
|
|
|
sealed interface DecodeResult {
|
|
|
|
|
data class Ok(val message: DecodedMessage) : DecodeResult
|
|
|
|
|
data class Err(val failure: DecodeFailure) : DecodeResult
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2026-09-09 19:48:45 +08:00
|
|
|
* XML codec:使用 SIS 文档对应的 Jackson XML 注解 DTO,再显式转换为领域载荷;
|
|
|
|
|
* XMLInputFactory 禁用 DTD/外部实体,原文仍由入站层保留。
|
2026-09-06 16:13:50 +08:00
|
|
|
*/
|
|
|
|
|
interface XmlCodec {
|
|
|
|
|
fun decode(rawXml: String): DecodeResult
|
|
|
|
|
fun encodeRqrd(kind: String, rangeJson: String): String
|
|
|
|
|
}
|