public Future<PoolEntry<T, C>> lease( final Object state, final Timeout requestTimeout, final FutureCallback<PoolEntry<T, C>> callback) { Asserts.check(!terminated.get(), "Connection pool shut down"); final BasicFuture<PoolEntry<T, C>> future = new BasicFuture<>(callback); final PoolEntry<T, C> availableEntry = getAvailableEntry(state); if (availableEntry != null) { addLeased(availableEntry); future.completed(availableEntry); } else { if (pending.isEmpty() && leased.size() < max) { final PoolEntry<T, C> entry = new PoolEntry<>(route, timeToLive); addLeased(entry); future.completed(entry); } else { pending.add(new LeaseRequest<>(state, requestTimeout, future)); } } return future; }
public Future<PoolEntry<T, C>> lease( final Object state, final Timeout requestTimeout, final FutureCallback<PoolEntry<T, C>> callback) { Asserts.check(!terminated.get(), "Connection pool shut down"); final BasicFuture<PoolEntry<T, C>> future = new BasicFuture<>(callback); final PoolEntry<T, C> availableEntry = getAvailableEntry(state); if (availableEntry != null) { addLeased(availableEntry); future.completed(availableEntry); } else { if (pending.isEmpty() && leased.size() < max) { final PoolEntry<T, C> entry = new PoolEntry<>(route, timeToLive); addLeased(entry); future.completed(entry); } else { pending.add(new LeaseRequest<>(state, requestTimeout, future)); } } return future; }
final PoolEntry<T, C> availableEntry = getAvailableEntry(state); if (availableEntry != null) { addLeased(availableEntry); leaseRequest.completed(availableEntry); } else if (leased.size() < max) { final PoolEntry<T, C> newEntry = new PoolEntry<>(route, timeToLive); addLeased(newEntry); leaseRequest.completed(newEntry);
final PoolEntry<T, C> availableEntry = getAvailableEntry(state); if (availableEntry != null) { addLeased(availableEntry); leaseRequest.completed(availableEntry); } else if (leased.size() < max) { final PoolEntry<T, C> newEntry = new PoolEntry<>(route, timeToLive); addLeased(newEntry); leaseRequest.completed(newEntry);