@Override public boolean returnConnection(Connection connection) { return connectionPool.returnConnection(connection); }
private synchronized void returnIfConnected(Optional<ConnectionPool> connectionPool, AtomicReference<Connection> connectionRef) { Connection connection = connectionRef.get(); if (connection != null && connectionPool.isPresent()) { connectionPool.get().returnConnection(connection); connectionRef.set(null); } } };
default <T> Observable<T> withConnection(Function<Connection, Observable<T>> task) { return borrowConnection() .flatMap(connection -> task.apply(connection) .doOnCompleted(() -> returnConnection(connection)) .doOnError(throwable -> closeConnection(connection))); }