static <T> T withConnection(final ReadBinding binding, final CallableWithConnection<T> callable) { ConnectionSource source = binding.getReadConnectionSource(); try { return withConnectionSource(source, callable); } finally { source.release(); } }
static <T> T withConnection(final WriteBinding binding, final CallableWithConnection<T> callable) { ConnectionSource source = binding.getWriteConnectionSource(); try { return withConnectionSource(source, callable); } finally { source.release(); } }
@Override public AsyncReadBinding retain() { super.retain(); return this; }
@Override public ReadWriteBinding retain() { wrapped.retain(); return this; }
private static void withConnectionSource(final AsyncConnectionSource source, final AsyncCallableWithConnectionAndSource callable) { source.getConnection(new SingleResultCallback<AsyncConnection>() { @Override public void onResult(final AsyncConnection result, final Throwable t) { callable.call(source, result, t); } }); }
@Override public void onResult(final AsyncConnection connection, final Throwable t) { if (t != null) { connectionSource.release(); } else { killCursorAsynchronouslyAndReleaseConnectionAndSource(connection, localCursor); } } });
static <T> T withConnection(final ReadBinding binding, final CallableWithConnectionAndSource<T> callable) { ConnectionSource source = binding.getReadConnectionSource(); try { return withConnectionSource(source, callable); } finally { source.release(); } }
@Override public ConnectionSource retain() { super.retain(); return this; }
private void getMore(final ServerCursor cursor, final SingleResultCallback<List<T>> callback, final boolean tryNext) { connectionSource.getConnection(new SingleResultCallback<AsyncConnection>() { @Override public void onResult(final AsyncConnection connection, final Throwable t) { if (t != null) { callback.onResult(null, t); } else { getMore(connection, cursor, callback, tryNext); } } }); }
@Override public AsyncConnectionSource retain() { super.retain(); return this; }
@Override public ConnectionSource retain() { super.retain(); return this; }
@Override public ReadWriteBinding retain() { super.retain(); return this; }
@Override public AsyncReadWriteBinding retain() { super.retain(); return this; }