/** * Constructs an instance with inherited settings. * * @param settings settings to inherit from */ public Builder(ConnectionPool.Settings settings) { this.maxConnectionsPerHost = settings.maxConnectionsPerHost(); this.maxPendingConnectionsPerHost = settings.maxPendingConnectionsPerHost(); this.connectTimeoutMillis = settings.connectTimeoutMillis(); this.socketTimeoutMillis = settings.socketTimeoutMillis(); this.pendingConnectionTimeoutMillis = settings.pendingConnectionTimeoutMillis(); this.connectionExpirationSeconds = settings.connectionExpirationSeconds(); }
private void registerMetrics(ConnectionPool hostConnectionPool, MetricRegistry scopedRegistry) { ConnectionPool.Stats stats = hostConnectionPool.stats(); scopedRegistry.register("busy-connections", (Gauge<Integer>) stats::busyConnectionCount); scopedRegistry.register("pending-connections", (Gauge<Integer>) stats::pendingConnectionCount); scopedRegistry.register("available-connections", (Gauge<Integer>) stats::availableConnectionCount); scopedRegistry.register("ttfb", (Gauge<Integer>) () -> (int) stats.timeToFirstByteMs()); scopedRegistry.register("connection-attempts", (Gauge<Integer>) () -> (int) stats.connectionAttempts()); scopedRegistry.register("connection-failures", (Gauge<Integer>) () -> (int) stats.connectionFailures()); scopedRegistry.register("connections-closed", (Gauge<Integer>) () -> (int) stats.closedConnections()); scopedRegistry.register("connections-terminated", (Gauge<Integer>) () -> (int) stats.terminatedConnections()); }
@Override public LoadBalancingMetric loadBalancingMetric() { return new LoadBalancingMetric(this.pool.stats().busyConnectionCount() + pool.stats().pendingConnectionCount()); }
@Override public boolean returnConnection(Connection connection) { return connectionPool.returnConnection(connection); }
private Observable<Connection> createConnection() { return connectionFactory.createConnection(origin, connectionSettings) .doOnNext(connection -> connection.addConnectionListener(CloseAfterUseConnectionDestination.this)); }
/** * Creates a new builder from an existing origin that will inherit the properties of that origin. * * @param origin an existing origin * @return a new builder inheriting its properties */ public static Builder newOriginBuilder(Origin origin) { return new Builder(origin); }
/** * Constructs a new client. * * @param connectTimeoutMillis socket connection timeout in milliseconds * @param readTimeoutMillis socket read/write timeout in milliseconds */ public UrlConnectionHttpClient(int connectTimeoutMillis, int readTimeoutMillis) { this(connectTimeoutMillis, readTimeoutMillis, sslSocketFactory("TLS")); }
/** * Builds a new Origin with the properties set in this builder. * * @return a new Origin */ public Origin build() { return new Origin(this); } }
@Override public long getTimeToFirstByteMillis() { return nettyConnection.getTimeToFirstByteMillis(); }
@Override public Origin getOrigin() { return connectionPool.getOrigin(); }
@Override public Stats stats() { return connectionPool.stats(); }
@Override public Settings settings() { return connectionPool.settings(); }
@Override public Observable<HttpResponse> write(HttpRequest request) { return nettyConnection.write(request); }
public static RemoteHost remoteHost(Origin origin, HttpClient client, LoadBalancingMetricSupplier metricSupplier) { return new RemoteHost(origin, client, metricSupplier); }
@Override public void connectionClosed(Connection connection) { if (connection != null) { connection.close(); } }
/** * Creates a new Origin builder. * * @param host host and port * @return a new Origin builder */ public static Builder newOriginBuilder(HostAndPort host) { return new Builder(host); }
/** * Constructs a new client. * * @param connectTimeoutMillis socket connection timeout in milliseconds * @param readTimeoutMillis socket read/write timeout in milliseconds * @param protocol supported TLS protocol, TLSv1.1, TLSv1.2, etc. */ public UrlConnectionHttpClient(int connectTimeoutMillis, int readTimeoutMillis, String protocol) { this(connectTimeoutMillis, readTimeoutMillis, sslSocketFactory(protocol)); }