Example usage for com.google.common.util.concurrent Futures transform

List of usage examples for com.google.common.util.concurrent Futures transform

Introduction

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

Prototype

public static <I, O> ListenableFuture<O> transform(ListenableFuture<I> input,
        Function<? super I, ? extends O> function, Executor executor) 

Source Link

Document

Returns a new ListenableFuture whose result is the product of applying the given Function to the result of the given Future .

Usage

From source file:com.noorq.casser.core.operation.AbstractStreamOperation.java

public ListenableFuture<Stream<E>> async() {

    ResultSetFuture resultSetFuture = sessionOps.executeAsync(options(buildStatement()), showValues);

    ListenableFuture<Stream<E>> future = Futures.transform(resultSetFuture,
            new Function<ResultSet, Stream<E>>() {

                @Override/* w  w  w  .  ja v  a  2s .c  om*/
                public Stream<E> apply(ResultSet resultSet) {
                    return transform(resultSet);
                }

            }, sessionOps.getExecutor());

    return future;
}

From source file:com.noorq.casser.core.operation.AbstractOptionalOperation.java

public ListenableFuture<Optional<E>> async() {

    ResultSetFuture resultSetFuture = sessionOps.executeAsync(options(buildStatement()), showValues);

    ListenableFuture<Optional<E>> future = Futures.transform(resultSetFuture,
            new Function<ResultSet, Optional<E>>() {

                @Override/*from w  ww  .  j av  a  2 s.c o  m*/
                public Optional<E> apply(ResultSet resultSet) {
                    return transform(resultSet);
                }

            }, sessionOps.getExecutor());

    return future;
}

From source file:com.skcraft.concurrency.DeferredImpl.java

@Override
public <O> Deferred<O> thenApplyAsync(Function<I, O> function, ListeningExecutorService executor) {
    return new DeferredImpl<O>(Futures.transform(future, function, executor), defaultExecutor);
}

From source file:com.skcraft.plume.common.util.concurrent.DeferredImpl.java

@Override
public <O> Deferred<O> filter(Filter<I, O> function, ListeningExecutorService executor) {
    return new DeferredImpl<O>(
            Futures.transform(future,
                    (AsyncFunction<I, O>) input -> Futures.immediateFuture(function.apply(input)), executor),
            defaultExecutor);/*from www.  j  a v a2  s  .c  o m*/
}

From source file:com.google.devtools.build.lib.remote.ByteStreamBuildEventArtifactUploader.java

@Override
public ListenableFuture<PathConverter> upload(Map<Path, LocalFile> files) {
    if (files.isEmpty()) {
        return Futures.immediateFuture(PathConverter.NO_CONVERSION);
    }/*from  w  w  w  . jav a  2  s. c om*/
    List<ListenableFuture<PathDigestPair>> uploads = new ArrayList<>(files.size());

    Context prevCtx = ctx.attach();
    try {
        for (Path file : files.keySet()) {
            Chunker chunker = new Chunker(file);
            Digest digest = chunker.digest();
            ListenableFuture<PathDigestPair> upload = Futures.transform(
                    uploader.uploadBlobAsync(chunker, /*forceUpload=*/false),
                    unused -> new PathDigestPair(file, digest), MoreExecutors.directExecutor());
            uploads.add(upload);
        }

        return Futures.transform(Futures.allAsList(uploads),
                (uploadsDone) -> new PathConverterImpl(remoteServerInstanceName, uploadsDone),
                MoreExecutors.directExecutor());
    } catch (IOException e) {
        return Futures.immediateFailedFuture(e);
    } finally {
        ctx.detach(prevCtx);
    }
}

From source file:com.facebook.buck.distributed.build_slave.MultiSlaveBuildModeRunnerFactory.java

/**
 * Create a {@link CoordinatorModeRunner}.
 *
 * @param isLocalMinionAlsoRunning - are we going to have a local minion working on this build?
 * @return a new instance of the {@link CoordinatorModeRunner}.
 *///from w w w  .j  a va 2  s. c  o  m
public static CoordinatorModeRunner createCoordinator(
        ListenableFuture<DelegateAndGraphs> delegateAndGraphsFuture, List<BuildTarget> topLevelTargetsToBuild,
        DistBuildConfig distBuildConfig, DistBuildService distBuildService, StampedeId stampedeId,
        Optional<BuildId> clientBuildId, boolean isLocalMinionAlsoRunning, Path logDirectoryPath,
        CoordinatorBuildRuleEventsPublisher coordinatorBuildRuleEventsPublisher, BuckEventBus eventBus,
        ListeningExecutorService executorService, ArtifactCache remoteCache,
        ListenableFuture<ParallelRuleKeyCalculator<RuleKey>> asyncRuleKeyCalculator,
        HealthCheckStatsTracker healthCheckStatsTracker,
        Optional<BuildSlaveTimingStatsTracker> timingStatsTracker, Optional<String> coordinatorMinionId) {

    ListenableFuture<BuildTargetsQueue> queueFuture = Futures.transformAsync(asyncRuleKeyCalculator,
            ruleKeyCalculator -> Futures.transform(delegateAndGraphsFuture, graphs -> {
                timingStatsTracker
                        .ifPresent(tracker -> tracker.startTimer(REVERSE_DEPENDENCY_QUEUE_CREATION_TIME));
                BuildTargetsQueue queue;
                try (ArtifactCacheByBuildRule artifactCache = new DistBuildArtifactCacheImpl(
                        graphs.getActionGraphAndBuilder().getActionGraphBuilder(), executorService, remoteCache,
                        eventBus, ruleKeyCalculator, Optional.empty())) {
                    queue = new CacheOptimizedBuildTargetsQueueFactory(
                            graphs.getActionGraphAndBuilder().getActionGraphBuilder(), artifactCache,
                            distBuildConfig.isDeepRemoteBuildEnabled(), ruleKeyCalculator.getRuleDepsCache(),
                            distBuildConfig.shouldBuildSelectedTargetsLocally()).createBuildTargetsQueue(
                                    topLevelTargetsToBuild, coordinatorBuildRuleEventsPublisher,
                                    distBuildConfig.getMostBuildRulesFinishedPercentageThreshold());
                } catch (Exception e) {
                    LOG.error(e, "Failed to create BuildTargetsQueue.");
                    throw new RuntimeException(e);
                }
                timingStatsTracker
                        .ifPresent(tracker -> tracker.stopTimer(REVERSE_DEPENDENCY_QUEUE_CREATION_TIME));
                return queue;
            }, executorService), executorService);
    Optional<String> minionQueue = distBuildConfig.getMinionQueue();
    Optional<String> minionRegion = distBuildConfig.getMinionRegion();
    Preconditions.checkArgument(minionQueue.isPresent(),
            "Minion queue name is missing to be able to run in Coordinator mode.");

    MinionQueueProvider minionQueueProvider = createMinionQueueProvider(distBuildConfig.getLowSpecMinionQueue(),
            minionQueue.get());

    CoordinatorEventListener listenerAndMinionCountProvider = new CoordinatorEventListener(distBuildService,
            stampedeId, distBuildConfig.getBuildLabel(), minionQueueProvider, isLocalMinionAlsoRunning,
            minionRegion.orElse(null));
    MinionHealthTracker minionHealthTracker = new MinionHealthTracker(new DefaultClock(),
            distBuildConfig.getMaxMinionSilenceMillis(),
            distBuildConfig.getMaxConsecutiveSlowDeadMinionChecks(),
            distBuildConfig.getHeartbeatServiceRateMillis(),
            distBuildConfig.getSlowHeartbeatWarningThresholdMillis(), healthCheckStatsTracker);

    ChromeTraceBuckConfig chromeTraceBuckConfig = distBuildConfig.getBuckConfig()
            .getView(ChromeTraceBuckConfig.class);

    Optional<URI> traceUploadUri = chromeTraceBuckConfig.getTraceUploadUriIfEnabled();

    return new CoordinatorModeRunner(queueFuture, stampedeId, listenerAndMinionCountProvider, logDirectoryPath,
            coordinatorBuildRuleEventsPublisher, distBuildService, clientBuildId, traceUploadUri,
            minionHealthTracker, listenerAndMinionCountProvider, coordinatorMinionId,
            distBuildConfig.isReleasingMinionsEarlyEnabled());
}

From source file:org.thingsboard.rule.engine.transform.TbChangeOriginatorNode.java

@Override
protected ListenableFuture<TbMsg> transform(TbContext ctx, TbMsg msg) {
    ListenableFuture<? extends EntityId> newOriginator = getNewOriginator(ctx, msg.getOriginator());
    return Futures.transform(newOriginator, (Function<EntityId, TbMsg>) n -> {
        if (n == null || n.isNullUid()) {
            return null;
        }/*from  w  w  w. j  a  v a  2 s .  co  m*/
        return ctx.transformMsg(msg, msg.getType(), n, msg.getMetaData(), msg.getData());
    }, ctx.getDbCallbackExecutor());
}

From source file:org.robotninjas.concurrent.FluentFutures.java

/**
 *
 * @param input1//from  w ww.  j  av  a 2  s  .com
 * @param input2
 * @param combine
 * @param executor
 * @param <X>
 * @param <Y>
 * @param <Z>
 * @return
 */
public static <X, Y, Z> FluentFuture<Z> combine(ListenableFuture<X> input1, final ListenableFuture<Y> input2,
        final Combine2<X, Y, Z> combine, Executor executor) {

    return FluentFutures.from(Futures.transform(input1, new AsyncFunction<X, Z>() {
        public ListenableFuture<Z> apply(final X left) throws Exception {
            return Futures.transform(input2, new Function<Y, Z>() {
                public Z apply(Y right) {
                    return combine.combine(left, right);
                }
            });
        }
    }, executor));
}

From source file:com.facebook.buck.distributed.RemoteExecutionStorageService.java

@Override
public ListenableFuture<ByteBuffer> fetch(Digest digest) {
    try {/*from   w w w  .j a  v  a  2s. c o  m*/
        try (ByteArrayOutputStream outStream = new ByteArrayOutputStream()) {
            return Futures.transform(fetchToStreamInternal(digest, outStream),
                    future -> ByteBuffer.wrap(outStream.toByteArray()), MoreExecutors.directExecutor());
        }
    } catch (IOException e) {
        return Futures.immediateFailedFuture(e);
    }
}

From source file:com.facebook.buck.parser.ConvertingPipeline.java

@Override
public ListenableFuture<ImmutableSet<T>> getAllNodesJob(final Cell cell, final Path buildFile)
        throws BuildTargetException {
    // TODO(csarbora): this hits the chained pipeline before hitting the cache
    ListenableFuture<List<T>> allNodesListJob = Futures.transformAsync(getItemsToConvert(cell, buildFile),
            allToConvert -> {//from  w w w .j  av  a2  s.  c om
                if (shuttingDown()) {
                    return Futures.immediateCancelledFuture();
                }

                ImmutableList.Builder<ListenableFuture<T>> allNodeJobs = ImmutableList.builder();

                for (final F from : allToConvert) {
                    if (isValid(from)) {
                        final BuildTarget target = getBuildTarget(cell.getRoot(), buildFile, from);
                        allNodeJobs.add(cache.getJobWithCacheLookup(cell, target, () -> {
                            if (shuttingDown()) {
                                return Futures.immediateCancelledFuture();
                            }
                            return dispatchComputeNode(cell, target, from);
                        }));
                    }
                }

                return Futures.allAsList(allNodeJobs.build());
            }, executorService);
    return Futures.transform(allNodesListJob, (Function<List<T>, ImmutableSet<T>>) ImmutableSet::copyOf,
            executorService);
}