in httpcore5-testing/src/main/java/org/apache/hc/core5/benchmark/BenchmarkWorker.java [275:355]
public void execute() {
if (requestCount.decrementAndGet() >= 0) {
AsyncClientEndpoint endpoint = endpointRef.get();
if (endpoint != null && !endpoint.isConnected()) {
endpoint.releaseAndDiscard();
endpoint = null;
}
if (endpoint == null) {
requester.connect(host, config.getSocketTimeout(), null, new FutureCallback<AsyncClientEndpoint>() {
@Override
public void completed(final AsyncClientEndpoint endpoint) {
endpointRef.set(endpoint);
endpoint.execute(
createRequestProducer(),
createResponseConsumer(),
context,
new FutureCallback<Void>() {
@Override
public void completed(final Void result) {
execute();
}
@Override
public void failed(final Exception cause) {
execute();
}
@Override
public void cancelled() {
completionLatch.countDown();
}
});
}
@Override
public void failed(final Exception cause) {
stats.incFailureCount();
if (config.getVerbosity() >= 1) {
System.out.println("Connect error: " + cause.getMessage());
}
execute();
}
@Override
public void cancelled() {
completionLatch.countDown();
}
});
} else {
stats.incKeepAliveCount();
endpoint.execute(
createRequestProducer(),
createResponseConsumer(),
context,
new FutureCallback<Void>() {
@Override
public void completed(final Void result) {
execute();
}
@Override
public void failed(final Exception cause) {
execute();
}
@Override
public void cancelled() {
completionLatch.countDown();
}
});
}
} else {
completionLatch.countDown();
}
}