package org.yzh.protocol.codec; import io.github.yezhihao.netmc.util.ByteBufUtils; import io.github.yezhihao.protostar.SchemaManager; import io.github.yezhihao.protostar.schema.RuntimeSchema; import io.netty.buffer.ByteBuf; import org.yzh.protocol.basics.JTMessage; import org.yzh.protocol.jsatl12.DataPacket; /** * 数据帧解码器 * @author yezhihao * https://gitee.com/yezhihao/jt808-server */ public class DataFrameMessageDecoder extends JTMessageDecoder { private final RuntimeSchema dataFrameSchema; private final byte[] dataFramePrefix; public DataFrameMessageDecoder(SchemaManager schemaManager, byte[] dataFramePrefix) { super(schemaManager); this.dataFramePrefix = dataFramePrefix; this.dataFrameSchema = schemaManager.getRuntimeSchema(DataPacket.class, 0); } @Override public JTMessage decode(ByteBuf input) { if (ByteBufUtils.startsWith(input, dataFramePrefix)) { DataPacket message = new DataPacket(); message.setPayload(input); dataFrameSchema.mergeFrom(input, message); return message; } return super.decode(input); } }