@Override public final void sendTo(Address destination, ReplicableCommand command, DeliverOrder deliverOrder) { setTopologyId(command); performSend(Collections.singleton(destination), command, c -> { realOne.sendTo(destination, command, deliverOrder); return null; }); }
@Override public final Map<Address, Response> invokeRemotely(Map<Address, ReplicableCommand> rpcs, RpcOptions options) { try { rpcs.forEach((address, command) -> setTopologyId(command)); return CompletableFutures.await( invokeCommands(rpcs.keySet(), rpcs::get, MapResponseCollector.validOnly(rpcs.size()), options) .toCompletableFuture()); } catch (ExecutionException | InterruptedException e) { throw Util.rewrapAsCacheException(e); } }
@Override public final void sendToMany(Collection<Address> destinations, ReplicableCommand command, DeliverOrder deliverOrder) { setTopologyId(command); performSend(destinations, command, c -> { realOne.sendToMany(destinations, command, deliverOrder); return null; }); }
@Override public final void sendToAll(ReplicableCommand command, DeliverOrder deliverOrder) { setTopologyId(command); performSend(getTransport().getMembers(), command, c -> { realOne.sendToAll(command, deliverOrder); return null; }); }
@Deprecated @Override public final CompletableFuture<Map<Address, Response>> invokeRemotelyAsync(Collection<Address> recipients, ReplicableCommand command, RpcOptions rpcOptions) { Collection<Address> targets = recipients != null ? recipients : getTransport().getMembers(); setTopologyId(command); MapResponseCollector collector = MapResponseCollector.ignoreLeavers(shouldIgnoreLeavers(rpcOptions), targets.size()); if (rpcOptions.responseMode().isSynchronous()) { return invokeCommand(targets, command, collector, rpcOptions).toCompletableFuture(); } else { sendToMany(recipients, command, rpcOptions.deliverOrder()); return CompletableFutures.completedEmptyMap(); } }