/** * Dianping.com Inc. * Copyright (c) 2003-2013 All Rights Reserved. */ package com.dianping.pigeon.remoting.netty.invoker; import static org.jboss.netty.channel.Channels.pipeline; import com.dianping.pigeon.remoting.common.codec.CodecConfig; import com.dianping.pigeon.remoting.common.codec.CodecConfigFactory; import com.dianping.pigeon.remoting.netty.codec.CompressHandler; import com.dianping.pigeon.remoting.netty.codec.Crc32Handler; import com.dianping.pigeon.remoting.netty.codec.FrameDecoder; import com.dianping.pigeon.remoting.netty.codec.FramePrepender; import com.dianping.pigeon.remoting.netty.invoker.codec.*; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.channel.ChannelPipelineFactory; public class NettyClientPipelineFactory implements ChannelPipelineFactory { private NettyClient client; private static CodecConfig codecConfig = CodecConfigFactory.createClientConfig(); public NettyClientPipelineFactory(NettyClient client) { this.client = client; } public ChannelPipeline getPipeline() throws Exception { ChannelPipeline pipeline = pipeline(); pipeline.addLast("framePrepender", new FramePrepender()); pipeline.addLast("frameDecoder", new FrameDecoder()); pipeline.addLast("crc32Handler", new Crc32Handler(codecConfig)); pipeline.addLast("compressHandler", new CompressHandler(codecConfig)); pipeline.addLast("invokerDecoder", new InvokerDecoder()); pipeline.addLast("invokerEncoder", new InvokerEncoder()); pipeline.addLast("clientHandler", new NettyClientHandler(this.client)); return pipeline; } }