private static <V> V retrieveValue(Future<V> future) throws ExecutionException, InterruptedException { if (future instanceof InternalCompletableFuture) { return ((InternalCompletableFuture<V>) future).join(); } return future.get(); }
public int getLockCount(NodeEngine nodeEngine, Data key) { Operation operation = new GetLockCountOperation(namespace, key); InternalCompletableFuture<Number> f = invoke(nodeEngine, operation, key); return f.join().intValue(); }
public long getRemainingLeaseTime(NodeEngine nodeEngine, Data key) { Operation operation = new GetRemainingLeaseTimeOperation(namespace, key); InternalCompletableFuture<Number> f = invoke(nodeEngine, operation, key); return f.join().longValue(); }
private <V> IScheduledFuture<V> submitOnPartitionSync(String taskName, Operation op, int partitionId) { op.setPartitionId(partitionId); invokeOnPartition(op).join(); return createFutureProxy(partitionId, taskName); }
@Override public int availablePermits() { Operation operation = new AvailableOperation(name) .setPartitionId(partitionId); InternalCompletableFuture<Integer> future = invokeOnPartition(operation); return future.join(); }
public void unlock(NodeEngine nodeEngine, Data key) { UnlockOperation operation = new UnlockOperation(namespace, key, getThreadId()); InternalCompletableFuture<Number> f = invoke(nodeEngine, operation, key); f.join(); }
private void beforeAwait(long threadId) { Data key = lockProxy.getKeyData(); BeforeAwaitOperation op = new BeforeAwaitOperation(namespace, key, threadId, conditionId); InternalCompletableFuture f = invoke(op); f.join(); }
@Override public void countDown() { Operation op = new CountDownOperation(name) .setPartitionId(partitionId); InternalCompletableFuture f = invokeOnPartition(op); f.join(); }
@Override public int getCount() { Operation op = new GetCountOperation(name) .setPartitionId(partitionId); InternalCompletableFuture<Integer> f = invokeOnPartition(op); return f.join(); }
@Override public void countDown() { Operation op = new CountDownOperation(name) .setPartitionId(partitionId); InternalCompletableFuture f = invokeOnPartition(op); f.join(); }
@Override public int getCount() { Operation op = new GetCountOperation(name) .setPartitionId(partitionId); InternalCompletableFuture<Integer> f = invokeOnPartition(op); return f.join(); }
@Override public int drainPermits() { Operation operation = new DrainOperation(name) .setPartitionId(partitionId); InternalCompletableFuture<Integer> future = invokeOnPartition(operation); return future.join(); }
private void beforeAwait(long threadId) { Data key = lockProxy.getKeyData(); BeforeAwaitOperation op = new BeforeAwaitOperation(namespace, key, threadId, conditionId); InternalCompletableFuture f = invoke(op); f.join(); }
@Override public boolean isCancelled() { checkAccessibleHandler(); checkAccessibleOwner(); Operation op = new IsCanceledOperation(handler); return this.<Boolean>invoke(op).join(); }
private void signal(boolean all) { long threadId = ThreadUtil.getThreadId(); Data key = lockProxy.getKeyData(); SignalOperation op = new SignalOperation(namespace, key, threadId, conditionId, all); InternalCompletableFuture f = invoke(op); f.join(); }
@Override public boolean isDone() { checkAccessibleHandler(); checkAccessibleOwner(); Operation op = new IsDoneOperation(handler); return this.<Boolean>invoke(op).join(); }
@Override public void dispose() { checkAccessibleHandler(); checkAccessibleOwner(); Operation op = new DisposeTaskOperation(handler); InternalCompletableFuture future = invoke(op); handler = null; future.join(); }
@Override public void disposeResult(long uniqueId) { int partitionId = Bits.extractInt(uniqueId, false); int sequence = Bits.extractInt(uniqueId, true); Operation op = new DisposeResultOperation(name, sequence).setPartitionId(partitionId); InternalCompletableFuture<?> future = invokeOnPartition(op); future.join(); }
@Override protected <K, V> CacheConfig<K, V> getCacheConfig(String cacheNameWithPrefix, String cacheName) { CacheGetConfigOperation op = new CacheGetConfigOperation(cacheNameWithPrefix, cacheName); int partitionId = nodeEngine.getPartitionService().getPartitionId(cacheNameWithPrefix); InternalCompletableFuture<CacheConfig<K, V>> f = nodeEngine.getOperationService() .invokeOnPartition(CacheService.SERVICE_NAME, op, partitionId); return f.join(); }
private Object invokeOnPartition(PartitionPredicate partitionPredicate, InternalOperationService operationService) { int partitionId = getPartitionId(); Predicate predicate = partitionPredicate.getTarget(); OperationFactory factory = createOperationFactory(predicate); InvocationBuilder invocationBuilder = operationService.createInvocationBuilder(getServiceName(), factory.createOperation(), partitionId); Object result = invocationBuilder.invoke().join(); return reduce(Collections.singletonMap(partitionId, result)); }