package com.alibaba.doris.client.net; import java.net.InetSocketAddress; import java.util.concurrent.Executors; import org.jboss.netty.bootstrap.ClientBootstrap; import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory; import com.alibaba.doris.client.net.netty.DorisClentNettyPipelineFactory; import com.alibaba.doris.client.net.netty.NettyConnectionImpl; /** * @author ajun Email:jack.yuj@alibaba-inc.com */ public class ConnectionFactory { private ConnectionFactory() { init(); } public void releaseResources() { bootstrap.releaseExternalResources(); } public static ConnectionFactory getInstance() { return factory; } public Connection getConnection(InetSocketAddress remoteAddress) { return new NettyConnectionImpl(bootstrap, remoteAddress); } public void init() { // initialize the connection factory, such as we need create connection pools here. // Configure the client. bootstrap = new ClientBootstrap(new NioClientSocketChannelFactory(Executors.newCachedThreadPool(), Executors.newCachedThreadPool())); // Set up the pipeline factory. bootstrap.setPipelineFactory(new DorisClentNettyPipelineFactory()); bootstrap.setOption("connectTimeoutMillis", CONNECT_TIME_OUT_MILLIS); bootstrap.setOption("tcpNoDelay", true); } ClientBootstrap bootstrap; public static final int CONNECT_TIME_OUT_MILLIS = 10000; private static ConnectionFactory factory = new ConnectionFactory(); }