Refine search
@Override public CompletableFuture<RootExecutionResultNode> execute(ExecutionContext executionContext, FieldSubSelection fieldSubSelection) { CompletableFuture<RootExecutionResultNode> rootCF = Async.each(util.fetchSubSelection(executionContext, fieldSubSelection)) .thenApply(RootExecutionResultNode::new); return rootCF.thenCompose(rootNode -> { NodeMultiZipper<ExecutionResultNode> unresolvedNodes = ResultNodesUtil.getUnresolvedNodes(rootNode); return nextStep(executionContext, unresolvedNodes); }) .thenApply(multiZipper -> multiZipper.toRootNode()) .thenApply(RootExecutionResultNode.class::cast); }
@Override public CompletableFuture<Boolean> addAll(Collection<? extends String> c) { Map<PartitionId, Collection<String>> partitions = Maps.newHashMap(); c.forEach(key -> partitions.computeIfAbsent(getProxyClient().getPartitionId(key), k -> Lists.newArrayList()).add(key)); return Futures.allOf(partitions.entrySet().stream() .map(entry -> getProxyClient() .applyOn(entry.getKey(), service -> service.addAll(entry.getValue())) .thenCompose(result -> checkLocked(result))) .collect(Collectors.toList())) .thenApply(results -> results.stream().reduce(Boolean::logicalOr).orElse(false)); }
@Override public CompletableFuture<PrimitivesService> start() { return primitiveRegistry.start() .thenCompose(v -> transactionService.start()) .thenRun(() -> { LOGGER.info("Started"); started.set(true); }) .thenApply(v -> this); }
@Override public CompletableFuture<OpenSessionResponse> openSession(MemberId memberId, OpenSessionRequest request) { return getServer(memberId).thenCompose(listener -> listener.openSession(encode(request))).thenApply(this::decode); }
@Override public CompletableFuture<CloseSessionResponse> closeSession(MemberId memberId, CloseSessionRequest request) { return getServer(memberId).thenCompose(listener -> listener.closeSession(encode(request))).thenApply(this::decode); }
@Override public CompletableFuture<JoinResponse> join(MemberId memberId, JoinRequest request) { return getServer(memberId).thenCompose(listener -> listener.join(encode(request))).thenApply(this::decode); }
@Override public CompletableFuture<PollResponse> poll(MemberId memberId, PollRequest request) { return getServer(memberId).thenCompose(listener -> listener.poll(encode(request))).thenApply(this::decode); }
@Override public CompletableFuture<MetadataResponse> metadata(MemberId memberId, MetadataRequest request) { return getServer(memberId).thenCompose(listener -> listener.metadata(encode(request))).thenApply(this::decode); }
@Override public CompletableFuture<ConfigureResponse> configure(MemberId memberId, ConfigureRequest request) { return getServer(memberId).thenCompose(listener -> listener.configure(encode(request))).thenApply(this::decode); }
@Override public CompletableFuture<ReconfigureResponse> reconfigure(MemberId memberId, ReconfigureRequest request) { return getServer(memberId).thenCompose(listener -> listener.reconfigure(encode(request))).thenApply(this::decode); }
@Override public CompletableFuture<HeartbeatResponse> heartbeat(MemberId memberId, HeartbeatRequest request) { return getClient(memberId).thenCompose(protocol -> protocol.heartbeat(encode(request))).thenApply(this::decode); }
@Override public CompletableFuture<QueryResponse> query(MemberId memberId, QueryRequest request) { return getServer(memberId).thenCompose(protocol -> protocol.query(encode(request))).thenApply(this::decode); }
@Override public CompletableFuture<LeaveResponse> leave(MemberId memberId, LeaveRequest request) { return getServer(memberId).thenCompose(listener -> listener.leave(encode(request))).thenApply(this::decode); }
@Override public CompletableFuture<InstallResponse> install(MemberId memberId, InstallRequest request) { return getServer(memberId).thenCompose(listener -> listener.install(encode(request))).thenApply(this::decode); }
@Override public CompletableFuture<VoteResponse> vote(MemberId memberId, VoteRequest request) { return getServer(memberId).thenCompose(listener -> listener.vote(encode(request))).thenApply(this::decode); }
@Override public CompletableFuture<CloseSessionResponse> closeSession(MemberId memberId, CloseSessionRequest request) { return getServer(memberId).thenCompose(protocol -> protocol.closeSession(encode(request))).thenApply(this::decode); }
@Override public CompletableFuture<KeepAliveResponse> keepAlive(MemberId memberId, KeepAliveRequest request) { return getServer(memberId).thenCompose(protocol -> protocol.keepAlive(encode(request))).thenApply(this::decode); }
@Override public CompletableFuture<CommandResponse> command(MemberId memberId, CommandRequest request) { return getServer(memberId).thenCompose(protocol -> protocol.command(encode(request))).thenApply(this::decode); }
@Override public CompletableFuture<KeepAliveResponse> keepAlive(MemberId memberId, KeepAliveRequest request) { return getServer(memberId).thenCompose(listener -> listener.keepAlive(encode(request))).thenApply(this::decode); }
@Override public CompletableFuture<TransferResponse> transfer(MemberId memberId, TransferRequest request) { return getServer(memberId).thenCompose(listener -> listener.install(encode(request))).thenApply(this::decode); }