@Override public Future<?> submit(Runnable runnable) { return delegate.submit(runnable); }
@Override public <T> Future<T> submit(Runnable runnable, T t) { return delegate.submit(runnable, t); }
@Override public <T> Future<T> submit(Callable<T> callable) { return delegate.submit(callable); }
private CompletableFuture<LookupDataResult> getAndRemovePendingLookupRequest(long requestId) { CompletableFuture<LookupDataResult> result = pendingLookupRequests.remove(requestId); if (result != null) { Pair<Long, Pair<ByteBuf, CompletableFuture<LookupDataResult>>> firstOneWaiting = waitingLookupRequests.poll(); if (firstOneWaiting != null) { // schedule a new lookup in. eventLoopGroup.submit(() -> { long newId = firstOneWaiting.getLeft(); CompletableFuture<LookupDataResult> newFuture = firstOneWaiting.getRight().getRight(); addPendingLookupRequests(newId, newFuture); ctx.writeAndFlush(firstOneWaiting.getRight().getLeft()).addListener(writeFuture -> { if (!writeFuture.isSuccess()) { log.warn("{} Failed to send request {} to broker: {}", ctx.channel(), newId, writeFuture.cause().getMessage()); getAndRemovePendingLookupRequest(newId); newFuture.completeExceptionally(writeFuture.cause()); } }); }); } else { pendingLookupRequestSemaphore.release(); } } return result; }
@Override public <T> Future<T> submit(Callable<T> callable) { return delegate.submit(callable); }
@Override public <T> Future<T> submit(Runnable runnable, T t) { return delegate.submit(runnable, t); }
@Override public Future<?> submit(Runnable task) { return delegate.submit(task); }
@Override public <T> Future<T> submit(Callable<T> callable) { return delegate.submit(callable); }
@Override public <T> Future<T> submit(Runnable runnable, T t) { return delegate.submit(runnable, t); }
@Override public <T> Future<T> submit(Callable<T> callable) { return delegate.submit(callable); }
@Override public <T> Future<T> submit(Runnable runnable, T t) { return delegate.submit(runnable, t); }
@Override public <T> Future<T> submit(Callable<T> callable) { return delegate.submit(callable); }
@Override public <T> Future<T> submit(Runnable task, T result) { return delegate.submit(task, result); }
@Override public <T> Future<T> submit(Callable<T> task) { return delegate.submit(task); }
@Override public <T> Future<T> submit(Callable<T> callable) { return delegate.submit(callable); }
@Override public Future<?> submit(Runnable runnable) { return delegate.submit(runnable); }
@Override public Future<?> submit(Runnable runnable) { return delegate.submit(runnable); }
@Override public Future<?> submit(Runnable runnable) { return delegate.submit(runnable); }
@Override public <T> Future<T> submit(Callable<T> task) { return delegate.submit(capturer.makeClosure(task)); }
@Override public <T> Future<T> submit(Runnable task, T result) { return delegate.submit(capturer.makeClosure(task), result); }