Skip to main content

decode_srpc_or_direct

Function decode_srpc_or_direct 

Source
pub fn decode_srpc_or_direct<M: Message + Default>(
    body: &[u8],
    validator: impl Fn(&M) -> bool,
) -> Result<M, SrpcDecodeError>
Expand description

统一 SRPC 封装解码:先尝试标准解码,如果结果无效则尝试 SRPC field 5 解码。

  • body: 后端响应体
  • validator: 验证解码结果是否有效的闭包。返回 true 表示结果有效,直接使用; 返回 false 表示结果无效,继续尝试 SRPC field 5 解码。

适用于 CMD 5120/5121 等被 SRPC envelope 包装的后端命令。

v1.4.106 codex 1110 F3 [P2] 修:不再 silently return M::default()。 caller 必须处理 Err,区分“空数据“和“解码失败“。default fallback 会让上层把 result_code=None + stock_list=[] 误识别为成功空状态。返 Result 后 caller 必须显式 match 处理 → 如果 decode failure 应 ret_type=-1 不能 silent empty。