package net.jxta.impl.endpoint.netty; import java.util.concurrent.atomic.AtomicBoolean; import net.jxta.endpoint.EndpointAddress; import net.jxta.peer.PeerID; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.channel.ChannelPipelineFactory; import org.jboss.netty.channel.Channels; import org.jboss.netty.util.Timer; public class NettyTransportChannelPipelineFactory implements ChannelPipelineFactory { private PeerID localPeerId; private Timer timeoutTimer; private NettyChannelRegistry registry; private AtomicBoolean acceptConnectionFlag; private AddressTranslator addrTranslator; private EndpointAddress returnAddress; private EndpointAddress remoteAddress; public NettyTransportChannelPipelineFactory(PeerID localPeerId, Timer timeoutTimer, NettyChannelRegistry registry, AddressTranslator addrTranslator, EndpointAddress remoteAddress, EndpointAddress returnAddress) { this(localPeerId, timeoutTimer, registry, addrTranslator, new AtomicBoolean(true), remoteAddress, returnAddress); } public NettyTransportChannelPipelineFactory(PeerID localPeerId, Timer timeoutTimer, NettyChannelRegistry registry, AddressTranslator addrTranslator, AtomicBoolean acceptConnectionFlag, EndpointAddress remoteAddress, EndpointAddress returnAddress) { this.localPeerId = localPeerId; this.timeoutTimer = timeoutTimer; this.registry = registry; this.acceptConnectionFlag = acceptConnectionFlag; this.addrTranslator = addrTranslator; this.remoteAddress = remoteAddress; this.returnAddress = returnAddress; } public ChannelPipeline getPipeline() throws Exception { ChannelPipeline pipeline = Channels.pipeline(); pipeline.addFirst(ConnectionRejector.NAME, new ConnectionRejector(acceptConnectionFlag)); pipeline.addLast(JxtaProtocolHandler.NAME, new JxtaProtocolHandler(addrTranslator, localPeerId, timeoutTimer, remoteAddress, returnAddress)); pipeline.addLast(JxtaMessageEncoder.NAME, new JxtaMessageEncoder()); pipeline.addLast(JxtaMessageDecoder.NAME, new JxtaMessageDecoder()); pipeline.addLast(MessageDispatchHandler.NAME, new MessageDispatchHandler(registry)); return pipeline; } }