2026-06-24 f4bd1f3c89d906131495a0aca5aaf82966378510
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package cn.iocoder.yudao.module.iot.gateway.protocol.tcp.codec;
 
import io.vertx.core.Handler;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.parsetools.RecordParser;
 
/**
 * IoT TCP 帧编解码器接口
 * <p>
 * 用于解决 TCP 粘包/拆包问题,提供解码(拆包)和编码(加帧)能力
 *
 * @author 芋道源码
 */
public interface IotTcpFrameCodec {
 
    /**
     * 获取编解码器类型
     *
     * @return 编解码器类型
     */
    IotTcpCodecTypeEnum getType();
 
    /**
     * 创建解码器(RecordParser)
     * <p>
     * 每个连接调用一次,返回的 parser 需绑定到 socket.handler()
     *
     * @param handler 消息处理器,当收到完整的消息帧后回调
     * @return RecordParser 实例
     */
    RecordParser createDecodeParser(Handler<Buffer> handler);
 
    /**
     * 编码消息(加帧)
     * <p>
     * 根据不同的编解码类型添加帧头/分隔符
     *
     * @param data 原始数据
     * @return 编码后的数据(带帧头/分隔符)
     */
    Buffer encode(byte[] data);
 
}