package com.lefu.remote.netty;
import com.lefu.remote.netty.blocking.BlockingRead;
import io.netty.channel.ChannelInboundHandler;
import io.netty.channel.ChannelOutboundHandler;
/**
* 业务入口句柄工厂类
* @author jiang.li
*
*/
public interface ChannelHandlerFactory {
/**
* 指示当前的 {@link ChannelInboundHandler} 是否开启阻塞读取模式
* @see {@link BlockingRead#read()}
* @return
*/
public boolean isBlockingRead();
/**
* 阻塞读取的超时时间,单位毫秒
* @return
*/
public int getTimeout();
/**
* 创建新业务句柄实例
* @return
*/
public ChannelInboundHandler newInstance();
/**
* 创建解码器句柄
* <pre>
* 继承 {@link ByteToMessageDecoder} 的解码器不允许共享,所以在 {@link ChannelPipeline} 初始化时不是单例模式。
* </pre>
* @return
*/
public ChannelInboundHandler newDecoder();
/**
* 创建编码器句柄
* @return
*/
public ChannelOutboundHandler newEncoder();
}