@Override public boolean closeConnection(Connection connection) { return connectionPool.closeConnection(connection); }
private synchronized void closeIfConnected(Optional<ConnectionPool> connectionPool, AtomicReference<Connection> connectionRef) { Connection connection = connectionRef.get(); if (connection != null && connectionPool.isPresent()) { connectionPool.get().closeConnection(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))); }