List of usage examples for com.google.common.util.concurrent Futures transform
public static <I, O> ListenableFuture<O> transform(ListenableFuture<I> input, Function<? super I, ? extends O> function, Executor executor)
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); }