private TimerTask setupTimeoutTask(final HttpUriRequest request, final AtomicBoolean timedOut) { int delay = config.getConnectTimeoutMillis() + config.getRequestTimeoutMillis(); TimerTask timeoutTask = new TimerTask() { @Override public void run() { timedOut.set(true); request.abort(); } }; timer.schedule(timeoutTask, delay); return timeoutTask; }
private RequestConfig createRequestConfig(HttpConfig config) { return RequestConfig.custom() .setConnectionRequestTimeout(config.getConnectTimeoutMillis()) .setConnectTimeout(config.getConnectTimeoutMillis()) .setSocketTimeout(config.getRequestTimeoutMillis()) .setRedirectsEnabled(config.isFollowRedirects()) .setMaxRedirects(config.getMaxRedirects()) .setRelativeRedirectsAllowed(config.isRejectRelativeRedirects()) .build(); }
private SocketConfig createSocketConfig(HttpConfig config) { return SocketConfig.custom().setSoTimeout(config.getRequestTimeoutMillis()).build(); }
public NingAsyncHttpClient(HttpConfig config) { Preconditions.checkNotNull(config); NettyAsyncHttpProviderConfig nettyConfig = new NettyAsyncHttpProviderConfig(); int workerThreads = Math.min(Runtime.getRuntime().availableProcessors(), 4); this.workerExecutorService = newWorkerThreadPool(workerThreads); this.channelFactory = newSocketChannelFactory(this.workerExecutorService, workerThreads); nettyConfig.setSocketChannelFactory(this.channelFactory); nettyConfig.setNettyTimer(TIMER); AsyncHttpClientConfig ningConfig = new AsyncHttpClientConfig.Builder() .addRequestFilter(new ThrottleRequestFilter(config.getMaxConnections())) .addRequestFilter(new AcceptEncodingRequestFilter()) .setMaxConnectionsPerHost(config.getMaxConnectionsPerHost()) .setConnectTimeout(config.getConnectTimeoutMillis()) .setRequestTimeout(config.getRequestTimeoutMillis()) .setReadTimeout(config.getRequestTimeoutMillis()) .setMaxRedirects(config.getMaxRedirects()) .setFollowRedirect(config.isFollowRedirects()) .setHostnameVerifier(new NingHostnameVerifier(config.getSSLConfig())) .setSSLContext(NingSSLContext.forConfig(config.getSSLConfig())) .setAsyncHttpClientProviderConfig(nettyConfig) .setUserAgent(config.getUserAgent()) .setIOThreadMultiplier(1) .build(); this.ningClient = new com.ning.http.client.AsyncHttpClient(ningConfig); this.requestConverter = new NingHttpRequestConverter(config.getObjectMapper()); this.defaultOptions = config.getOptions(); this.mapper = config.getObjectMapper(); }