Example usage for com.google.common.util.concurrent SettableFuture set

List of usage examples for com.google.common.util.concurrent SettableFuture set

Introduction

In this page you can find the example usage for com.google.common.util.concurrent SettableFuture set.

Prototype

@Override
    public boolean set(@Nullable V value) 

Source Link

Usage

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;
}