List of usage examples for com.google.common.util.concurrent SettableFuture set
@Override public boolean set(@Nullable V value)
From source file:com.canoo.dolphin.server.context.DolphinContextTaskQueue.java
public Future<Void> addTask(final Runnable task) { Assert.requireNonNull(task, "task"); taskLock.lock();/*w w w .jav a2s . com*/ try { final SettableFuture<Void> future = SettableFuture.create(); tasks.add(new Runnable() { @Override public void run() { try { task.run(); future.set(null); } catch (Exception e) { future.setException(e); } } }); LOG.trace("Tasks added to Dolphin Platform context {}", dolphinSessionId); taskCondition.signal(); return future; } finally { taskLock.unlock(); } }
From source file:co.cask.cdap.internal.app.runtime.workflow.AbstractProgramWorkflowRunner.java
/** * Adds a listener to the {@link ProgramController} and blocks for completion. * * @param controller the {@link ProgramController} for the program * @param context the {@link RuntimeContext} * @return {@link RuntimeContext} of the completed program * @throws Exception if the execution failed *//*from w w w .j av a2 s . co m*/ protected RuntimeContext executeProgram(final ProgramController controller, final RuntimeContext context) throws Exception { // Execute the program. final SettableFuture<RuntimeContext> completion = SettableFuture.create(); controller.addListener(new AbstractListener() { @Override public void completed() { completion.set(context); } @Override public void killed() { completion.set(context); } @Override public void error(Throwable cause) { completion.setException(cause); } }, Threads.SAME_THREAD_EXECUTOR); // Block for completion. try { return completion.get(); } catch (ExecutionException e) { Throwable cause = e.getCause(); if (cause instanceof Exception) { throw (Exception) cause; } throw Throwables.propagate(cause); } catch (InterruptedException e) { try { Futures.getUnchecked(controller.stop()); } catch (Throwable t) { // no-op } // reset the interrupt Thread.currentThread().interrupt(); return null; } }
From source file:com.twitter.heron.statemgr.zookeeper.curator.CuratorStateManager.java
@Override public ListenableFuture<Boolean> deleteTMasterLocation(String topologyName) { // It is a EPHEMERAL node and would be removed automatically final SettableFuture<Boolean> result = SettableFuture.create(); result.set(true); return result; }
From source file:org.opendaylight.openflowplugin.applications.bulk.o.matic.SalBulkFlowServiceImpl.java
private ListenableFuture<RpcResult<Void>> handleResultFuture( CheckedFuture<Void, TransactionCommitFailedException> submitFuture) { final SettableFuture<RpcResult<Void>> rpcResult = SettableFuture.create(); Futures.addCallback(submitFuture, new FutureCallback<Void>() { @Override//from w w w . j a va 2s . c o m public void onSuccess(Void result) { rpcResult.set(RpcResultBuilder.success(result).build()); } @Override public void onFailure(Throwable t) { RpcResultBuilder<Void> rpcResultBld = RpcResultBuilder.<Void>failed() .withRpcErrors(Collections.singleton( RpcResultBuilder.newError(RpcError.ErrorType.APPLICATION, null, t.getMessage()))); rpcResult.set(rpcResultBld.build()); } }); return rpcResult; }
From source file:org.opendaylight.netconf.topology.impl.OnlySuccessStateAggregator.java
@Override public ListenableFuture<Void> combineDeleteAttempts(List<ListenableFuture<Void>> stateFutures) { final SettableFuture<Void> future = SettableFuture.create(); final ListenableFuture<List<Void>> allAsList = Futures.allAsList(stateFutures); Futures.addCallback(allAsList, new FutureCallback<List<Void>>() { @Override/*from www. ja v a 2 s .c om*/ public void onSuccess(List<Void> result) { future.set(null); } @Override public void onFailure(Throwable t) { LOG.error("One of the combined delete attempts failed {}", t); future.setException(t); } }); return future; }
From source file:org.opendaylight.openflowplugin.applications.bulk.o.matic.SalBulkFlowServiceImpl.java
private <T> ListenableFuture<RpcResult<Void>> handleResultFuture(ListenableFuture<List<T>> submitFuture) { final SettableFuture<RpcResult<Void>> rpcResult = SettableFuture.create(); Futures.addCallback(submitFuture, new FutureCallback<List<T>>() { @Override/*from w w w.j a v a 2s .c om*/ public void onSuccess(List<T> result) { rpcResult.set(RpcResultBuilder.success((Void) null).build()); } @Override public void onFailure(Throwable t) { RpcResultBuilder<Void> rpcResultBld = RpcResultBuilder.<Void>failed() .withRpcErrors(Collections.singleton( RpcResultBuilder.newError(RpcError.ErrorType.APPLICATION, null, t.getMessage()))); rpcResult.set(rpcResultBld.build()); } }); return rpcResult; }
From source file:org.robotninjas.protobuf.netty.client.NettyRpcChannel.java
private ListenableFuture<Message> doCallMethod(MethodDescriptor method, final RpcController controller, Message request, final Message responsePrototype, boolean blocking) { ListenableFuture<NettyRpcProto.RpcResponse> result = new RpcCall(buildRequest(blocking, method, request)); channel.writeAndFlush(result);/*from ww w.j a v a 2s . c o m*/ return Futures.transform(result, new AsyncFunction<NettyRpcProto.RpcResponse, Message>() { public ListenableFuture<Message> apply(NettyRpcProto.RpcResponse input) { SettableFuture<Message> response = SettableFuture.create(); try { final Message.Builder builder = responsePrototype.newBuilderForType(); Message result = builder.mergeFrom(input.getResponseMessage()).build(); response.set(result); } catch (InvalidProtocolBufferException e) { controller.setFailed(nullToEmpty(e.getMessage())); response.setException(e); } return response; } }); }
From source file:co.cask.cdap.common.twill.AbstractMasterTwillRunnable.java
private Service.Listener createServiceListener(final String name, final SettableFuture<String> future) { return new ServiceListenerAdapter() { @Override//from w ww . j ava 2s . c om public void terminated(Service.State from) { LOG.info("Service " + name + " terminated"); future.set(name); } @Override public void failed(Service.State from, Throwable failure) { LOG.error("Service " + name + " failed", failure); future.setException(failure); } }; }
From source file:io.datakernel.service.ServiceGraphModule.java
private static ListenableFuture<?> combineFutures(List<ListenableFuture<?>> futures, final Executor executor) { final SettableFuture<?> resultFuture = SettableFuture.create(); final AtomicInteger count = new AtomicInteger(futures.size()); final AtomicReference<Throwable> exception = new AtomicReference<>(); for (ListenableFuture<?> future : futures) { final ListenableFuture<?> finalFuture = future != null ? future : Futures.immediateFuture(null); finalFuture.addListener(new Runnable() { @Override/* ww w. j a v a 2s . c o m*/ public void run() { try { finalFuture.get(); } catch (InterruptedException | ExecutionException e) { exception.set(Throwables.getRootCause(e)); } if (count.decrementAndGet() == 0) { if (exception.get() != null) resultFuture.setException(exception.get()); else resultFuture.set(null); } } }, executor); } return resultFuture; }
From source file:com.twitter.heron.statemgr.zookeeper.curator.CuratorStateManager.java
@Override public ListenableFuture<Boolean> deleteSchedulerLocation(String topologyName) { // if scheduler is service, the znode is ephemeral and it's deleted automatically if (isSchedulerService) { final SettableFuture<Boolean> result = SettableFuture.create(); result.set(true); return result; } else {/* w ww.ja v a 2 s .c om*/ return deleteNode(getSchedulerLocationPath(topologyName)); } }