package muduo.rpc; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.channel.ChannelPipelineFactory; import org.jboss.netty.channel.Channels; import org.jboss.netty.handler.codec.frame.LengthFieldBasedFrameDecoder; import org.jboss.netty.handler.codec.frame.LengthFieldPrepender; public class RpcChannelPiplineFactory implements ChannelPipelineFactory { private RpcDecoder rpcDecoder = new RpcDecoder(); private RpcEncoder rpcEncoder = new RpcEncoder(); private LengthFieldPrepender frameEncoder = new LengthFieldPrepender(4); private RpcPeer rpcPeer; public RpcChannelPiplineFactory(RpcPeer peer) { this.rpcPeer = peer; } @Override public ChannelPipeline getPipeline() throws Exception { ChannelPipeline p = Channels.pipeline(); p.addLast("frameDecoder", new LengthFieldBasedFrameDecoder(16 * 1024 * 1024, 0, 4, 0, 4)); p.addLast("rpcDecoder", rpcDecoder); p.addLast("frameEncoder", frameEncoder); p.addLast("rpcEncoder", rpcEncoder); p.addLast("handler", new RpcMessageHandler(rpcPeer)); return p; } }