@Override public <U> DefaultConnectionFuture<U> thenComposeAsync(Function<? super T, ? extends CompletionStage<U>> fn, Executor executor) { return adopt(delegate.thenComposeAsync(fn, executor)); }
@Override public <U> CompletableFuture<U> thenComposeAsync( Function<? super T, ? extends CompletionStage<U>> fn, Executor executor) { return wrap(super.thenComposeAsync(fn, executor)); }
@Override public <U> DefaultConnectionFuture<U> thenComposeAsync(Function<? super T, ? extends CompletionStage<U>> fn) { return adopt(delegate.thenComposeAsync(fn)); }
@Override public <U> CompletableFuture<U> thenComposeAsync(Function<? super T, ? extends CompletionStage<U>> fn) { return wrap(super.thenComposeAsync(fn)); }
protected CompletableFuture<Void> startServices() { return messagingService.start() .thenComposeAsync(v -> unicastService.start(), threadContext) .thenComposeAsync(v -> broadcastService.start(), threadContext) .thenComposeAsync(v -> membershipService.start(), threadContext) .thenComposeAsync(v -> communicationService.start(), threadContext) .thenComposeAsync(v -> eventService.start(), threadContext) .thenApply(v -> null); }
@Override @SuppressWarnings("unchecked") protected CompletableFuture<Void> stopServices() { return primitives.stop() .exceptionally(e -> null) .thenComposeAsync(v -> partitions.stop(), threadContext) .exceptionally(e -> null) .thenComposeAsync(v -> super.stopServices(), threadContext); }
@Override protected CompletableFuture<Void> startServices() { return super.startServices() .thenComposeAsync(v -> partitions.start(), threadContext) .thenComposeAsync(v -> primitives.start(), threadContext) .thenApply(v -> null); }
public <U> Task<U> thenCompose(Supplier<? extends CompletionStage<U>> fn) { // must be separated otherwise the execution of the wrap could happen in another thread final Supplier<? extends CompletionStage<U>> wrap = TaskContext.wrap(fn); if (defaultExecutor != null) { return Task.from(super.thenComposeAsync((T x) -> wrap.get(), defaultExecutor)); } return Task.from(super.thenCompose((T x) -> wrap.get())); }
@Override public <U> CompletableFuture<U> thenComposeAsync(Function<? super T, ? extends CompletionStage<U>> fn, Executor executor) { return ctx.makeContextAware(super.thenComposeAsync(ctx.makeContextAware(fn), executor)); }
@Override public synchronized CompletableFuture<Void> stop() { if (closeFuture != null) { return closeFuture; } closeFuture = stopServices() .thenComposeAsync(v -> completeShutdown(), threadContext); return closeFuture; }
@Override public <U> Task<U> thenComposeAsync(Function<? super T, ? extends java.util.concurrent.CompletionStage<U>> function) { final Function<? super T, ? extends CompletionStage<U>> wrap = TaskContext.wrap(function); return Task.from(super.thenComposeAsync(wrap)); }
@Override public <U> Task<U> thenComposeAsync(Function<? super T, ? extends java.util.concurrent.CompletionStage<U>> function, Executor executor) { final Function<? super T, ? extends CompletionStage<U>> wrap = TaskContext.wrap(function); return Task.from(super.thenComposeAsync(wrap, executor)); }
@Override public <U> CompletableFuture<U> thenComposeAsync(Function<? super T, ? extends CompletionStage<U>> fn) { return ctx.makeContextAware(super.thenComposeAsync(ctx.makeContextAware(fn))); }
@Override public <U> CompletableFuture<U> thenComposeAsync(Function<? super T, ? extends CompletionStage<U>> fn) { return wrap(orderedFuture().thenComposeAsync(fn)); }
@Override public <U> CompletableFuture<U> thenComposeAsync(Function<? super T, ? extends CompletionStage<U>> fn, Executor executor) { return wrap(orderedFuture().thenComposeAsync(fn, executor)); }
public <U> Task<U> thenCompose(Function<? super T, ? extends CompletionStage<U>> fn) { final Function<? super T, ? extends CompletionStage<U>> wrap = TaskContext.wrap(fn); if (defaultExecutor != null) { return Task.from(super.thenComposeAsync(wrap, defaultExecutor)); } return Task.from(super.thenCompose(wrap)); }
@Override public CompletableFuture<LedgerEntries> readAsync(long firstEntry, long lastEntry) { return bk.getProgrammedFailure().thenComposeAsync((res) -> { log.debug("readEntries: first={} last={} total={}", firstEntry, lastEntry, entries.size()); List<LedgerEntry> seq = new ArrayList<>(); long entryId = firstEntry; while (entryId <= lastEntry && entryId < entries.size()) { seq.add(entries.get((int) entryId++).duplicate()); } log.debug("Entries read: {}", seq); return FutureUtils.value(LedgerEntriesImpl.create(seq)); }); }
@Override public void asyncDeleteLedger(long lId, DeleteCallback cb, Object ctx) { getProgrammedFailure().thenComposeAsync((res) -> { if (ledgers.containsKey(lId)) { ledgers.remove(lId); return FutureUtils.value(null); } else { return FutureUtils.exception(new BKException.BKNoSuchLedgerExistsException()); } }, executor).whenCompleteAsync((res, exception) -> { if (exception != null) { cb.deleteComplete(getExceptionCode(exception), ctx); } else { cb.deleteComplete(BKException.Code.OK, ctx); } }, executor); }
@Override public void asyncClose(CloseCallback cb, Object ctx) { bk.getProgrammedFailure().thenComposeAsync((res) -> { fenced = true; return FutureUtils.value(null); }, bk.executor).whenCompleteAsync((res, exception) -> { if (exception != null) { cb.closeComplete(PulsarMockBookKeeper.getExceptionCode(exception), null, ctx); } else { cb.closeComplete(BKException.Code.OK, this, ctx); } }, bk.executor); }
private CompletableFuture<KvStateResponse> getState( final KvStateRequest request, final boolean forceUpdate) { return getKvStateLookupInfo(request.getJobId(), request.getStateName(), forceUpdate) .thenComposeAsync((Function<KvStateLocation, CompletableFuture<KvStateResponse>>) location -> { final int keyGroupIndex = KeyGroupRangeAssignment.computeKeyGroupForKeyHash( request.getKeyHashCode(), location.getNumKeyGroups()); final InetSocketAddress serverAddress = location.getKvStateServerAddress(keyGroupIndex); if (serverAddress == null) { return FutureUtils.completedExceptionally(new UnknownKvStateKeyGroupLocationException(getServerName())); } else { // Query server final KvStateID kvStateId = location.getKvStateID(keyGroupIndex); final KvStateInternalRequest internalRequest = new KvStateInternalRequest( kvStateId, request.getSerializedKeyAndNamespace()); return kvStateClient.sendRequest(serverAddress, internalRequest); } }, queryExecutor); }