@Override public Map<Address, Response> invokeRemotely(Map<Address, ReplicableCommand> rpcs, RpcOptions options) { long start = timeService.time(); Map<Address, Response> responseMap = actual.invokeRemotely(rpcs, options); for (Entry<Address, ReplicableCommand> entry : rpcs.entrySet()) { // TODO: This is giving a time for all rpcs combined... updateStats(entry.getValue(), options.responseMode().isSynchronous(), timeService.timeDuration(start, NANOSECONDS), Collections.singleton(entry.getKey())); } return responseMap; }
@Override public Map<Address, Response> invokeRemotely(Collection<Address> recipients, ReplicableCommand rpcCommand, ResponseMode mode, long timeout, ResponseFilter responseFilter, DeliverOrder deliverOrder, boolean anycast) throws Exception { Collection<Address> targets = recipients != null ? recipients : members; MapResponseCollector collector = MapResponseCollector.ignoreLeavers(shouldIgnoreLeavers(mode), targets.size()); CompletableFuture<Map<Address, Response>> rpcFuture = blockRequest(rpcCommand, collector); if (mode.isAsynchronous()) { return Collections.emptyMap(); } else { try { return rpcFuture.get(10, TimeUnit.SECONDS); } catch (ExecutionException e) { throw Util.rewrapAsCacheException(e.getCause()); } } }
@Override public CompletableFuture<Map<Address, Response>> invokeRemotelyAsync(Collection<Address> recipients, ReplicableCommand rpc, RpcOptions options) { long start = timeService.time(); CompletableFuture<Map<Address, Response>> future = actual.invokeRemotelyAsync(recipients, rpc, options); return future.thenApply(responseMap -> { updateStats(rpc, options.responseMode().isSynchronous(), timeService.timeDuration(start, NANOSECONDS), recipients); return responseMap; }); }
@Override public Map<Address, Response> invokeRemotely(Collection<Address> recipients, ReplicableCommand rpc, RpcOptions options) { long start = timeService.time(); Map<Address, Response> responseMap = actual.invokeRemotely(recipients, rpc, options); updateStats(rpc, options.responseMode().isSynchronous(), timeService.timeDuration(start, NANOSECONDS), recipients); return responseMap; }
@Override public CompletableFuture<Map<Address, Response>> invokeRemotelyAsync(Collection<Address> recipients, ReplicableCommand rpcCommand, ResponseMode mode, long timeout, ResponseFilter responseFilter, DeliverOrder deliverOrder, boolean anycast) { Collection<Address> targets = recipients != null ? recipients : members; MapResponseCollector collector = mode.isSynchronous() ? MapResponseCollector.ignoreLeavers(shouldIgnoreLeavers(mode), targets.size()) : null; return blockRequest(rpcCommand, collector); }
@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(); } }