package com.zt.plat.module.qms.iot.tcpserver.inf;

import tech.zzjc.tio.core.ChannelContext;
import tech.zzjc.tio.core.exception.TioDecodeException;
import tech.zzjc.tio.core.intf.Packet;

import java.nio.ByteBuffer;

/**
 * <b>DecoderFunction</b>
 * <p>
 * 更新历史：
 * <pre> 版本         更新时间            更新者        更新内容<hr/>
 * V1.0      2024年9月10日          wxr         Add</pre>
 * <b>Copyright (C)  云南志者竟成科技有限公司</b> 
 * </p>
 * @author 王兴荣<wxr@wangxingrong.com>
 * @version V1.0 
 * @since 2024年9月10日
 */
@FunctionalInterface
public interface DecoderFunction {

	/**
	 * 解码函数
	 *
	 * @param buffer         ByteBuffer
	 * @param readableLength readableLength
	 * @param context        ChannelContext
	 * @return ProxyProtocolMessage
	 * @throws TioDecodeException TioDecodeException
	 */
	Packet apply(ChannelContext context, ByteBuffer buffer, int readableLength) throws TioDecodeException;
}
