List of usage examples for io.netty.channel.pool SimpleChannelPool SimpleChannelPool
public SimpleChannelPool(Bootstrap bootstrap, final ChannelPoolHandler handler)
From source file:com.google.devtools.build.lib.remote.blobstore.http.HttpBlobStore.java
License:Open Source License
public HttpBlobStore(URI uri, int timeoutMillis, @Nullable final Credentials creds) throws Exception { boolean useTls = uri.getScheme().equals("https"); if (uri.getPort() == -1) { int port = useTls ? 443 : 80; uri = new URI(uri.getScheme(), uri.getUserInfo(), uri.getHost(), port, uri.getPath(), uri.getQuery(), uri.getFragment());// w ww .java 2s . co m } this.uri = uri; final SslContext sslCtx; if (useTls) { // OpenSsl gives us a > 2x speed improvement on fast networks, but requires netty tcnative // to be there which is not available on all platforms and environments. SslProvider sslProvider = OpenSsl.isAvailable() ? SslProvider.OPENSSL : SslProvider.JDK; sslCtx = SslContextBuilder.forClient().sslProvider(sslProvider).build(); } else { sslCtx = null; } Bootstrap clientBootstrap = new Bootstrap().channel(NioSocketChannel.class) .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, timeoutMillis).group(eventLoop) .remoteAddress(uri.getHost(), uri.getPort()); downloadChannels = new SimpleChannelPool(clientBootstrap, new ChannelPoolHandler() { @Override public void channelReleased(Channel ch) { ch.pipeline().remove("read-timeout-handler"); } @Override public void channelAcquired(Channel ch) { ch.pipeline().addFirst("read-timeout-handler", new ReadTimeoutHandler(timeoutMillis)); } @Override public void channelCreated(Channel ch) { ChannelPipeline p = ch.pipeline(); p.addFirst("read-timeout-handler", new ReadTimeoutHandler(timeoutMillis)); if (sslCtx != null) { SSLEngine engine = sslCtx.newEngine(ch.alloc()); engine.setUseClientMode(true); p.addFirst(new SslHandler(engine)); } p.addLast(new HttpClientCodec()); p.addLast(new HttpDownloadHandler(creds)); } }); uploadChannels = new SimpleChannelPool(clientBootstrap, new ChannelPoolHandler() { @Override public void channelReleased(Channel ch) { } @Override public void channelAcquired(Channel ch) { } @Override public void channelCreated(Channel ch) { ChannelPipeline p = ch.pipeline(); if (sslCtx != null) { SSLEngine engine = sslCtx.newEngine(ch.alloc()); engine.setUseClientMode(true); p.addFirst(new SslHandler(engine)); } p.addLast(new HttpResponseDecoder()); // The 10KiB limit was chosen at random. We only expect HTTP servers to respond with // an error message in the body and that should always be less than 10KiB. p.addLast(new HttpObjectAggregator(10 * 1024)); p.addLast(new HttpRequestEncoder()); p.addLast(new ChunkedWriteHandler()); p.addLast(new HttpUploadHandler(creds)); } }); this.creds = creds; }
From source file:com.heliosapm.streams.metrichub.HubManager.java
License:Apache License
private HubManager(final Properties properties) { Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { try { close();/*from w ww .j a v a 2 s . c o m*/ } catch (Exception x) { /* No Op */} } }); log.info(">>>>> Initializing HubManager..."); metricMetaService = new MetricsMetaAPIImpl(properties); tsdbEndpoint = TSDBEndpoint.getEndpoint(metricMetaService.getSqlWorker()); for (String url : tsdbEndpoint.getUpServers()) { final URL tsdbUrl = URLHelper.toURL(url); tsdbAddresses.add(new InetSocketAddress(tsdbUrl.getHost(), tsdbUrl.getPort())); } endpointCount = tsdbAddresses.size(); endpointSequence = new AtomicInteger(endpointCount); group = new NioEventLoopGroup(Runtime.getRuntime().availableProcessors() * 2, metricMetaService.getForkJoinPool()); bootstrap = new Bootstrap(); bootstrap.handler(channelInitializer).group(group).channel(NioSocketChannel.class) .option(ChannelOption.RCVBUF_ALLOCATOR, new AdaptiveRecvByteBufAllocator()) .option(ChannelOption.ALLOCATOR, BufferManager.getInstance()); final ChannelPoolHandler poolHandler = this; poolMap = new AbstractChannelPoolMap<InetSocketAddress, SimpleChannelPool>() { @Override protected SimpleChannelPool newPool(final InetSocketAddress key) { final Bootstrap b = new Bootstrap().handler(channelInitializer).group(group).remoteAddress(key) .channel(NioSocketChannel.class) .option(ChannelOption.RCVBUF_ALLOCATOR, new AdaptiveRecvByteBufAllocator()) .option(ChannelOption.ALLOCATOR, BufferManager.getInstance()); return new SimpleChannelPool(b, poolHandler); } }; eventExecutor = new DefaultEventExecutor(metricMetaService.getForkJoinPool()); channelGroup = new DefaultChannelGroup("MetricHubChannelGroup", eventExecutor); // tsdbAddresses.parallelStream().forEach(addr -> { // final Set<Channel> channels = Collections.synchronizedSet(new HashSet<Channel>(3)); // IntStream.of(1,2,3).parallel().forEach(i -> { // final ChannelPool pool = poolMap.get(addr); // try {channels.add(pool.acquire().awaitUninterruptibly().get()); // } catch (Exception e) {} // log.info("Acquired [{}] Channels", channels.size()); // channels.parallelStream().forEach(ch -> pool.release(ch)); // }); // }); log.info("<<<<< HubManager Initialized."); }
From source file:com.ibasco.agql.core.transport.pool.DefaultChannelPoolMap.java
License:Open Source License
@Override protected P newPool(K key) { return (P) new SimpleChannelPool(bootstrap, handler); }
From source file:com.ibasco.agql.core.transport.tcp.NettyPooledTcpTransport.java
License:Open Source License
@Override public ChannelPool createChannelPool(InetSocketAddress key) { return new SimpleChannelPool(getBootstrap().remoteAddress(key), channelPoolHandler); }
From source file:com.splicemachine.olap.AsyncOlapNIOLayer.java
License:Apache License
public AsyncOlapNIOLayer(String host, int port) { InetSocketAddress socketAddr = new InetSocketAddress(host, port); Bootstrap bootstrap = new Bootstrap(); NioEventLoopGroup group = new NioEventLoopGroup(5, new ThreadFactoryBuilder().setNameFormat("olapClientWorker-%d").setDaemon(true) .setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { @Override public void uncaughtException(Thread t, Throwable e) { LOG.error("[" + t.getName() + "] Unexpected error in AsyncOlapNIO pool: ", e); }/*from w w w .j av a2 s . co m*/ }).build()); bootstrap.channel(NioSocketChannel.class).group(group).option(ChannelOption.SO_KEEPALIVE, true) .remoteAddress(socketAddr); //TODO -sf- this may be excessive network usage --consider a bounded pool to prevent over-connection? this.channelPool = new SimpleChannelPool(bootstrap, new AbstractChannelPoolHandler() { @Override public void channelCreated(Channel channel) throws Exception { ChannelPipeline p = channel.pipeline(); p.addLast("frameEncoder", new LengthFieldPrepender(4)); p.addLast("protobufEncoder", new ProtobufEncoder()); p.addLast("frameDecoder", new LengthFieldBasedFrameDecoder(1 << 30, 0, 4, 0, 4)); p.addLast("protobufDecoder", decoder); } }); executorService = group; }
From source file:org.eclipse.californium.elements.tcp.TcpClientConnector.java
License:Open Source License
@Override public synchronized void start() throws IOException { if (rawDataChannel == null) { throw new IllegalStateException("Cannot start without message handler."); }//from ww w . j a va2 s .com if (workerGroup != null) { throw new IllegalStateException("Connector already started"); } workerGroup = new NioEventLoopGroup(numberOfThreads); poolMap = new AbstractChannelPoolMap<SocketAddress, ChannelPool>() { @Override protected ChannelPool newPool(SocketAddress key) { Bootstrap bootstrap = new Bootstrap().group(workerGroup).channel(NioSocketChannel.class) .option(ChannelOption.SO_KEEPALIVE, true).option(ChannelOption.AUTO_READ, true) .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, connectTimeoutMillis).remoteAddress(key); // We multiplex over the same TCP connection, so don't acquire // more than one connection per endpoint. // TODO: But perhaps we could make it a configurable property. if (USE_FIXED_CONNECTION_POOL) { return new FixedChannelPool(bootstrap, new MyChannelPoolHandler(key), 1); } else { return new SimpleChannelPool(bootstrap, new MyChannelPoolHandler(key)); } } }; }
From source file:org.eclipse.milo.opcua.stack.client.transport.http.OpcHttpTransport.java
License:Open Source License
private static ChannelPool createChannelPool(UaStackClientConfig config) { final String endpointUrl = config.getEndpoint().getEndpointUrl(); String host = EndpointUtil.getHost(endpointUrl); if (host == null) host = ""; int port = EndpointUtil.getPort(endpointUrl); LOGGER.debug("createChannelPool() host={} port={}", host, port); Bootstrap bootstrap = new Bootstrap().channelFactory(NioSocketChannel::new).group(config.getEventLoop()) .remoteAddress(host, port);/*from w w w. ja va 2 s .co m*/ return new SimpleChannelPool(bootstrap, new AbstractChannelPoolHandler() { @Override public void channelCreated(Channel channel) throws Exception { String scheme = EndpointUtil.getScheme(endpointUrl); if ("https".equalsIgnoreCase(scheme) || "opc.https".equalsIgnoreCase(scheme)) { SslContext sslContext = SslContextBuilder.forClient() .trustManager(InsecureTrustManagerFactory.INSTANCE).build(); channel.pipeline().addLast(sslContext.newHandler(channel.alloc())); } int maxMessageSize = config.getMessageLimits().getMaxMessageSize(); channel.pipeline().addLast(new LoggingHandler(LogLevel.TRACE)); channel.pipeline().addLast(new HttpClientCodec()); channel.pipeline().addLast(new HttpObjectAggregator(maxMessageSize)); channel.pipeline().addLast(new OpcClientHttpCodec(config)); LOGGER.debug("channelCreated(): " + channel); } @Override public void channelAcquired(Channel channel) { LOGGER.debug("channelAcquired(): " + channel); } @Override public void channelReleased(Channel channel) { LOGGER.debug("channelReleased(): " + channel); } }); }