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; }
leaseRequest.failed(DeadlineTimeoutException.from(deadline)); } else { final PoolEntry<T, C> availableEntry = getAvailableEntry(state); if (availableEntry != null) { addLeased(availableEntry);
leaseRequest.failed(DeadlineTimeoutException.from(deadline)); } else { final PoolEntry<T, C> availableEntry = getAvailableEntry(state); if (availableEntry != null) { addLeased(availableEntry);