Class ChannelManager
- java.lang.Object
-
- org.asynchttpclient.netty.channel.ChannelManager
-
public class ChannelManager extends Object
-
-
Field Summary
Fields Modifier and Type Field Description static StringAHC_HTTP_HANDLERstatic StringAHC_HTTP2_HANDLERstatic StringAHC_WS_HANDLERstatic StringCHUNKED_WRITER_HANDLERstatic StringHTTP_CLIENT_CODECstatic StringHTTP2_FRAME_CODECstatic StringHTTP2_MULTIPLEXstatic StringINFLATER_HANDLERstatic StringLOGGING_HANDLERstatic StringSOCKS_HANDLERstatic StringSSL_HANDLERstatic StringWS_COMPRESSOR_HANDLERstatic StringWS_DECODER_HANDLERstatic StringWS_ENCODER_HANDLERstatic StringWS_FRAME_AGGREGATOR
-
Constructor Summary
Constructors Constructor Description ChannelManager(AsyncHttpClientConfig config, io.netty.util.Timer nettyTimer)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description io.netty.handler.ssl.SslHandleraddSslHandler(io.netty.channel.ChannelPipeline pipeline, Uri uri, String virtualHost, boolean hasSocksProxyHandler)voidclose()voidcloseChannel(io.netty.channel.Channel channel)voidconfigureBootstraps(NettyRequestSender requestSender)voiddrainChannelAndOffer(io.netty.channel.Channel channel, NettyResponseFuture<?> future)voiddrainChannelAndOffer(io.netty.channel.Channel channel, NettyResponseFuture<?> future, boolean keepAlive, Object partitionKey)@Nullable io.netty.resolver.AddressResolverGroup<InetSocketAddress>getAddressResolverGroup()Return theAddressResolverGroupused for async DNS resolution, ornullif per-request name resolvers should be used (legacy behavior).io.netty.util.concurrent.Future<io.netty.bootstrap.Bootstrap>getBootstrap(Uri uri, io.netty.resolver.NameResolver<InetAddress> nameResolver, ProxyServer proxy)ChannelPoolgetChannelPool()ClientStatsgetClientStats()io.netty.channel.EventLoopGroupgetEventLoopGroup()Http2HandlergetHttp2Handler()Returns the sharedHttp2Handlerinstance for use with stream child channels.static booleanisHttp2(io.netty.channel.Channel channel)Checks whether the given channel is an HTTP/2 connection (i.e. has the HTTP/2 multiplex handler installed).booleanisHttp2CleartextEnabled()static booleanisHttp2StreamChannel(io.netty.channel.Channel channel)Checks whether the given channel is an HTTP/2 stream child channel.booleanisOpen()static booleanisSslHandlerConfigured(io.netty.channel.ChannelPipeline pipeline)io.netty.channel.Channelpoll(Uri uri, String virtualHost, ProxyServer proxy, ChannelPoolPartitioning connectionPoolPartitioning)io.netty.channel.ChannelpollHttp2(Uri uri, String virtualHost, ProxyServer proxy, ChannelPoolPartitioning connectionPoolPartitioning)Polls for an HTTP/2 connection by URI/virtualHost/proxy, using the same partition key logic as the regular pool.io.netty.channel.ChannelpollHttp2Connection(Object partitionKey)Returns an active, non-draining HTTP/2 connection for the given partition key, ornull.voidregisterHttp2Connection(Object partitionKey, io.netty.channel.Channel channel)Registers an HTTP/2 connection in the registry for the given partition key.voidregisterOpenChannel(io.netty.channel.Channel channel)voidremoveAll(io.netty.channel.Channel connection)voidremoveHttp2Connection(Object partitionKey, io.netty.channel.Channel channel)Removes an HTTP/2 connection from the registry, but only if it's the currently registered connection for that partition key (avoids removing a replacement connection).voidtryToOfferChannelToPool(io.netty.channel.Channel channel, AsyncHandler<?> asyncHandler, boolean keepAlive, Object partitionKey)io.netty.util.concurrent.Future<io.netty.channel.Channel>updatePipelineForHttpsTunneling(io.netty.channel.ChannelPipeline pipeline, Uri requestUri, ProxyServer proxyServer)io.netty.util.concurrent.Future<io.netty.channel.Channel>updatePipelineForHttpTunneling(io.netty.channel.ChannelPipeline pipeline, Uri requestUri)voidupgradePipelineForWebSockets(io.netty.channel.ChannelPipeline pipeline)voidupgradePipelineToHttp2(io.netty.channel.ChannelPipeline pipeline)Upgrades the pipeline from HTTP/1.1 to HTTP/2 after ALPN negotiates "h2".
-
-
-
Field Detail
-
HTTP_CLIENT_CODEC
public static final String HTTP_CLIENT_CODEC
- See Also:
- Constant Field Values
-
SSL_HANDLER
public static final String SSL_HANDLER
- See Also:
- Constant Field Values
-
SOCKS_HANDLER
public static final String SOCKS_HANDLER
- See Also:
- Constant Field Values
-
INFLATER_HANDLER
public static final String INFLATER_HANDLER
- See Also:
- Constant Field Values
-
CHUNKED_WRITER_HANDLER
public static final String CHUNKED_WRITER_HANDLER
- See Also:
- Constant Field Values
-
WS_DECODER_HANDLER
public static final String WS_DECODER_HANDLER
- See Also:
- Constant Field Values
-
WS_FRAME_AGGREGATOR
public static final String WS_FRAME_AGGREGATOR
- See Also:
- Constant Field Values
-
WS_COMPRESSOR_HANDLER
public static final String WS_COMPRESSOR_HANDLER
- See Also:
- Constant Field Values
-
WS_ENCODER_HANDLER
public static final String WS_ENCODER_HANDLER
- See Also:
- Constant Field Values
-
AHC_HTTP_HANDLER
public static final String AHC_HTTP_HANDLER
- See Also:
- Constant Field Values
-
AHC_WS_HANDLER
public static final String AHC_WS_HANDLER
- See Also:
- Constant Field Values
-
LOGGING_HANDLER
public static final String LOGGING_HANDLER
- See Also:
- Constant Field Values
-
HTTP2_FRAME_CODEC
public static final String HTTP2_FRAME_CODEC
- See Also:
- Constant Field Values
-
HTTP2_MULTIPLEX
public static final String HTTP2_MULTIPLEX
- See Also:
- Constant Field Values
-
AHC_HTTP2_HANDLER
public static final String AHC_HTTP2_HANDLER
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
ChannelManager
public ChannelManager(AsyncHttpClientConfig config, io.netty.util.Timer nettyTimer)
-
-
Method Detail
-
isSslHandlerConfigured
public static boolean isSslHandlerConfigured(io.netty.channel.ChannelPipeline pipeline)
-
configureBootstraps
public void configureBootstraps(NettyRequestSender requestSender)
-
tryToOfferChannelToPool
public final void tryToOfferChannelToPool(io.netty.channel.Channel channel, AsyncHandler<?> asyncHandler, boolean keepAlive, Object partitionKey)
-
registerHttp2Connection
public void registerHttp2Connection(Object partitionKey, io.netty.channel.Channel channel)
Registers an HTTP/2 connection in the registry for the given partition key. The connection stays in the registry (not the regular pool) to allow multiplexing — multiple requests can share the same connection concurrently.
-
removeHttp2Connection
public void removeHttp2Connection(Object partitionKey, io.netty.channel.Channel channel)
Removes an HTTP/2 connection from the registry, but only if it's the currently registered connection for that partition key (avoids removing a replacement connection).
-
pollHttp2Connection
public io.netty.channel.Channel pollHttp2Connection(Object partitionKey)
Returns an active, non-draining HTTP/2 connection for the given partition key, ornull. Unlike the regular pool, this does NOT remove the connection — it remains available for concurrent multiplexed requests.
-
pollHttp2
public io.netty.channel.Channel pollHttp2(Uri uri, String virtualHost, ProxyServer proxy, ChannelPoolPartitioning connectionPoolPartitioning)
Polls for an HTTP/2 connection by URI/virtualHost/proxy, using the same partition key logic as the regular pool. Returns the connection without removing it from the registry.
-
poll
public io.netty.channel.Channel poll(Uri uri, String virtualHost, ProxyServer proxy, ChannelPoolPartitioning connectionPoolPartitioning)
-
removeAll
public void removeAll(io.netty.channel.Channel connection)
-
close
public void close()
-
closeChannel
public void closeChannel(io.netty.channel.Channel channel)
-
registerOpenChannel
public void registerOpenChannel(io.netty.channel.Channel channel)
-
updatePipelineForHttpTunneling
public io.netty.util.concurrent.Future<io.netty.channel.Channel> updatePipelineForHttpTunneling(io.netty.channel.ChannelPipeline pipeline, Uri requestUri)
-
updatePipelineForHttpsTunneling
public io.netty.util.concurrent.Future<io.netty.channel.Channel> updatePipelineForHttpsTunneling(io.netty.channel.ChannelPipeline pipeline, Uri requestUri, ProxyServer proxyServer)
-
addSslHandler
public io.netty.handler.ssl.SslHandler addSslHandler(io.netty.channel.ChannelPipeline pipeline, Uri uri, String virtualHost, boolean hasSocksProxyHandler)
-
getBootstrap
public io.netty.util.concurrent.Future<io.netty.bootstrap.Bootstrap> getBootstrap(Uri uri, io.netty.resolver.NameResolver<InetAddress> nameResolver, ProxyServer proxy)
-
isHttp2
public static boolean isHttp2(io.netty.channel.Channel channel)
Checks whether the given channel is an HTTP/2 connection (i.e. has the HTTP/2 multiplex handler installed).
-
isHttp2StreamChannel
public static boolean isHttp2StreamChannel(io.netty.channel.Channel channel)
Checks whether the given channel is an HTTP/2 stream child channel. Stream channels are single-use and don't support HTTP/1.1 operations like draining or pipeline modification.
-
getHttp2Handler
public Http2Handler getHttp2Handler()
Returns the sharedHttp2Handlerinstance for use with stream child channels.
-
upgradePipelineToHttp2
public void upgradePipelineToHttp2(io.netty.channel.ChannelPipeline pipeline)
Upgrades the pipeline from HTTP/1.1 to HTTP/2 after ALPN negotiates "h2". Removes HTTP/1.1 handlers and addsHttp2FrameCodec+Http2MultiplexHandler. The per-streamHttp2Handleris added separately on each stream child channel.
-
upgradePipelineForWebSockets
public void upgradePipelineForWebSockets(io.netty.channel.ChannelPipeline pipeline)
-
drainChannelAndOffer
public void drainChannelAndOffer(io.netty.channel.Channel channel, NettyResponseFuture<?> future)
-
drainChannelAndOffer
public void drainChannelAndOffer(io.netty.channel.Channel channel, NettyResponseFuture<?> future, boolean keepAlive, Object partitionKey)
-
getChannelPool
public ChannelPool getChannelPool()
-
getEventLoopGroup
public io.netty.channel.EventLoopGroup getEventLoopGroup()
-
getAddressResolverGroup
@Nullable public @Nullable io.netty.resolver.AddressResolverGroup<InetSocketAddress> getAddressResolverGroup()
Return theAddressResolverGroupused for async DNS resolution, ornullif per-request name resolvers should be used (legacy behavior).
-
getClientStats
public ClientStats getClientStats()
-
isOpen
public boolean isOpen()
-
isHttp2CleartextEnabled
public boolean isHttp2CleartextEnabled()
-
-