public void execute()

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();
        }
    }