public static PlcConnection getPlcConnection(PlcConnectionManager plcConnectionManager,
                                                 String connectionString,
                                                 ExecutorService executorService,
                                                 long requestTimeoutMs,
                                                 String info) throws InterruptedException, ExecutionException, TimeoutException {
        if(!info.isEmpty() && LOGGER.isTraceEnabled()){
            LOGGER.trace("Additional Info from caller {}", info);
        }
        CompletableFuture<PlcConnection> future = CompletableFuture.supplyAsync(() -> {
            try {
                return plcConnectionManager.getConnection(connectionString);
            } catch (Exception e){
                LOGGER.warn("Unable to instantiate connection to " + connectionString, e);
                throw new PlcRuntimeException(e);
            }
        }, executorService);
        if(LOGGER.isTraceEnabled()){
            LOGGER.trace("try to get a connection to {}", connectionString);
        }
        PlcConnection plcConnection=null;
        try {
            plcConnection = future.orTimeout(requestTimeoutMs, TimeUnit.MILLISECONDS).get();
        }
        catch (Exception e){
            LOGGER.trace("Additional Info from caller {}", info,e);
            throw new PlcRuntimeException(e);
        }
        return plcConnection;
    }
acquires a plc connection from connection pool
@param plcConnectionManager  Connection manager handling connection and pools
@param connectionString      Connection string as defined in the regarding implementation of {@link PlcDriver}
@param executorService       ExecutorService holding a pool as threads handling requests and stuff
@param requestTimeoutMs      maximum wait time for the future to return a result
@param info                  additional info for trace reasons
@return the {@link PlcConnection} used for acquiring data from PLC endpoint
@throws InterruptedException something went wrong
@throws ExecutionException something went wrong
@throws TimeoutException something went wrong
plc4j/tools/scraper/src/main/java/org/apache/plc4x/java/scraper/triggeredscraper/TriggeredScraperImpl.java