List of usage examples for com.google.common.util.concurrent SettableFuture set
@Override public boolean set(@Nullable V value)
From source file:com.android.testutils.VirtualTimeScheduler.java
/** * Implementation method for the various invokeAny methods above. * Note that this executes the tasks in serial until one successfully completes. This falls within the * contract of the {@link ScheduledExecutorService} interface. **//*w w w. j a va 2 s . c o m*/ private <T> Future<T> invokeAnyAsFuture(Collection<? extends Callable<T>> tasks) { final SettableFuture<T> output = SettableFuture.create(); submit(() -> { int index = 0; for (Callable<T> task : tasks) { ++index; try { output.set(task.call()); return; } catch (Exception e) { if (index == tasks.size() - 1) { output.setException(e); } } } }); return output; }
From source file:com.facebook.presto.operator.exchange.LocalExchangeMemoryManager.java
public void updateMemoryUsage(long bytesAdded) { SettableFuture<?> future; synchronized (this) { bufferedBytes.addAndGet(bytesAdded); // if we are full, then breakout if (bufferedBytes.get() > maxBufferedBytes || notFullFuture.isDone()) { return; }/*w w w. j av a 2s. co m*/ // otherwise, we are not full, so complete the future future = notFullFuture; notFullFuture = NOT_FULL; } // complete future outside of lock since this can invoke callbacks future.set(null); }
From source file:io.crate.operation.join.CollectingPageableTaskIterable.java
@Override public ListenableFuture<Void> fetchPage(PageInfo pageInfo) throws NoSuchElementException { this.pageInfo(pageInfo); final SettableFuture<Void> future = SettableFuture.create(); Futures.addCallback(currentTaskResult.fetch(pageInfo), new FutureCallback<PageableTaskResult>() { @Override/*w w w . j a v a2 s. co m*/ public void onSuccess(@Nullable PageableTaskResult result) { if (result == null) { future.setException(new IllegalArgumentException("PageableTaskResult is null")); } else { pages.add(result.page()); future.set(null); } } @Override public void onFailure(Throwable t) { future.setException(t); } }); return future; }
From source file:io.crate.executor.transport.task.elasticsearch.ESBulkIndexTask.java
public ESBulkIndexTask(ClusterService clusterService, Settings settings, TransportShardBulkActionDelegate transportShardBulkActionDelegate, TransportCreateIndexAction transportCreateIndexAction, ESIndexNode node) { this.node = node; this.bulkShardProcessor = new BulkShardProcessor(clusterService, settings, transportShardBulkActionDelegate, transportCreateIndexAction, node.partitionedTable(), true, this.node.sourceMaps().size()); if (!node.isBulkRequest()) { final SettableFuture<RowCountResult> futureResult = SettableFuture.create(); resultList = new ArrayList<>(1); resultList.add(futureResult);/*from w w w. j a va 2s .c o m*/ Futures.addCallback(bulkShardProcessor.result(), new FutureCallback<BitSet>() { @Override public void onSuccess(@Nullable BitSet result) { if (result == null) { futureResult.set(TaskResult.ROW_COUNT_UNKNOWN); } else { futureResult.set(new RowCountResult(result.cardinality())); } } @Override public void onFailure(@Nonnull Throwable t) { futureResult.setException(t); } }); } else { final int numResults = node.sourceMaps().size(); resultList = new ArrayList<>(numResults); for (int i = 0; i < numResults; i++) { resultList.add(SettableFuture.<RowCountResult>create()); } Futures.addCallback(bulkShardProcessor.result(), new FutureCallback<BitSet>() { @Override public void onSuccess(@Nullable BitSet result) { if (result == null) { setAllToFailed(null); return; } for (int i = 0; i < numResults; i++) { SettableFuture<RowCountResult> future = (SettableFuture<RowCountResult>) resultList.get(i); future.set(result.get(i) ? TaskResult.ONE_ROW : TaskResult.FAILURE); } } private void setAllToFailed(@Nullable Throwable throwable) { if (throwable == null) { for (ListenableFuture<RowCountResult> future : resultList) { ((SettableFuture<RowCountResult>) future).set(TaskResult.FAILURE); } } else { for (ListenableFuture<RowCountResult> future : resultList) { ((SettableFuture<RowCountResult>) future).set(RowCountResult.error(throwable)); } } } @Override public void onFailure(@Nonnull Throwable t) { setAllToFailed(t); } }); } }
From source file:c5db.discovery.BeaconService.java
@Override public ListenableFuture<NodeInfoReply> getNodeInfo(long nodeId, ModuleType module) { SettableFuture<NodeInfoReply> future = SettableFuture.create(); fiber.execute(() -> {//from w w w . j a v a 2s . c om NodeInfo peer = peerNodeInfoMap.get(nodeId); if (peer == null) { future.set(NodeInfoReply.NO_REPLY); } else { Integer servicePort = peer.modules.get(module); if (servicePort == null) { future.set(NodeInfoReply.NO_REPLY); } else { List<String> peerAddresses = peer.availability.getAddressesList(); future.set(new NodeInfoReply(true, peerAddresses, servicePort)); } } }); return future; }
From source file:com.blacklocus.jres.JresBulkRequestor.java
private void indexNextBatch() throws InterruptedException { List<JresBulkable> bulk = new ArrayList<JresBulkable>(batchSize); List<SettableFuture<JresBulkItemResult>> futures = new ArrayList<SettableFuture<JresBulkItemResult>>( batchSize);//w ww . j av a 2 s . co m int numDocs = 0; FuturedDocument futuredDocument; // Poll with a long-enough timeout to promote batch aggregation, but not so long as to keep things in limbo // for a long time. while (numDocs < batchSize && null != (futuredDocument = poll())) { futures.add(futuredDocument.future); bulk.add(futuredDocument.bulkable); ++numDocs; } if (bulk.size() > 0) { assert numDocs > 0; LOG.info("Submitting bulk index of " + numDocs + " products."); if (LOG.isDebugEnabled()) { LOG.debug(bulk.toString()); } JresBulkReply bulkReply = jres.quest(new JresBulk(targetIndex, targetType, bulk)); List<JresBulkItemResult> results = Lists.newArrayList(bulkReply.getResults()); assert futures.size() == results.size(); for (int i = 0; i < results.size(); i++) { SettableFuture<JresBulkItemResult> future = futures.get(i); JresBulkItemResult result = results.get(i); if (result.getResult().hasError()) { future.setException(new RuntimeException(result.getResult().getError())); } else { future.set(result); } } } else { // reading too hard, sleep a bit Thread.sleep(sleepIntervalMs); } }
From source file:org.eclipse.neoscada.protocol.iec60870.client.Client.java
protected synchronized void handleOperationComplete(final SettableFuture<Void> result, final ChannelFuture future) { if (this.connectFuture != result) { // this should never happen return;/*from ww w . ja v a 2 s. c o m*/ } this.connectFuture = null; try { future.get(); this.channel = future.channel(); fireConnected(this.channel); result.set(null); } catch (final InterruptedException | ExecutionException e) { fireDisconnected(e); result.setException(e); } }
From source file:com.android.tradefed.device.StubDevice.java
/** * {@inheritDoc}/*from w w w.ja va2 s . com*/ */ @Override public Future<String> getSystemProperty(String name) { SettableFuture<String> f = SettableFuture.create(); f.set(null); return f; }
From source file:com.android.tradefed.device.StubDevice.java
/** * {@inheritDoc}//from www .j a va 2s . co m */ @Override public Future<Integer> getBattery() { SettableFuture<Integer> f = SettableFuture.create(); f.set(0); return f; }
From source file:us.physion.ovation.ui.browser.TrashTopComponent.java
private ListenableFuture<Void> populateTrash() { final DataContext c = Lookup.getDefault().lookup(ConnectionProvider.class).getDefaultContext(); if (c == null) { //adding this node just to have a RefreshableNode as root explorerManager.setRootContext(new TrashRootNode(Children.LEAF)); log.warn("Null DataContext"); Toolkit.getDefaultToolkit().beep(); return Futures.immediateFuture(null); }// w ww . j a v a 2 s .co m final SettableFuture<Void> result = SettableFuture.create(); new SwingWorker<Iterable<OvationEntity>, Void>() { @Override protected Iterable<OvationEntity> doInBackground() throws Exception { return c.getTrashRoots(); } @Override protected void done() { if (isCancelled()) { result.set(null); return; } try { Iterable<OvationEntity> roots = get(); explorerManager.setRootContext(new TrashRootNode(new TopTrashChildren(roots))); result.set(null); } catch (InterruptedException ex) { log.warn("Cannot load trash roots", ex); result.setException(ex); } catch (ExecutionException ex) { log.warn("Cannot load trash roots", ex); result.setException(ex); } } }.execute(); return result; }