List of usage examples for com.google.common.util.concurrent FutureCallback FutureCallback
FutureCallback
From source file:de.xaniox.heavyspleef.commands.CommandRename.java
@Command(name = "rename", descref = Messages.Help.Description.RENAME, permission = Permissions.PERMISSION_RENAME, minArgs = 2, usage = "/spleef rename <game> <to>") public void onRenameCommand(CommandContext context, HeavySpleef heavySpleef) throws CommandException { final CommandSender sender = context.getSender() instanceof Player ? heavySpleef.getSpleefPlayer(context.getSender()) : context.getSender();//from w w w . j a v a2 s. c o m final String from = context.getString(0); final String to = context.getString(1); GameManager manager = heavySpleef.getGameManager(); CommandValidate.isTrue(manager.hasGame(from), i18n.getVarString(Messages.Command.GAME_DOESNT_EXIST).setVariable("game", from).toString()); CommandValidate.isTrue(!manager.hasGame(to), i18n.getString(Messages.Command.GAME_ALREADY_EXIST)); Game game = manager.getGame(from); final String oldName = game.getName(); manager.renameGame(game, to, new FutureCallback<Void>() { @Override public void onSuccess(Void result) { sender.sendMessage(i18n.getVarString(Messages.Command.GAME_RENAMED).setVariable("from", oldName) .setVariable("to", to).toString()); } @Override public void onFailure(Throwable t) { sender.sendMessage(i18n.getVarString(Messages.Command.ERROR_ON_SAVE) .setVariable("detail-message", t.toString()).toString()); } }); }
From source file:com.uber.tchannel.api.TFuture.java
@SuppressWarnings({ "unchecked" }) public void addCallback(final TFutureCallback<V> callback) { Futures.addCallback(this, new FutureCallback<V>() { @Override/*from ww w .ja v a2 s. com*/ public void onSuccess(V response) { callback.onResponse(response); } @Override public void onFailure(Throwable throwable) { callback.onResponse( (V) Response.build(argScheme, 0, ErrorType.UnexpectedError, throwable.getMessage())); } }); }
From source file:demos.BatchInsert.java
public void run() { try {/*from w ww .j av a 2s . c o m*/ logger.info("Preparing to insert metric data points"); Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build(); Session session = cluster.connect("demo"); PreparedStatement insert = session .prepare("insert into metric_data (metric_id, time, value) values (?, ?, ?)"); Random random = new Random(); DateTime time = DateTime.now().minusYears(1); final CountDownLatch latch = new CountDownLatch(NUM_INSERTS / BATCH_SIZE); FutureCallback<ResultSet> callback = new FutureCallback<ResultSet>() { @Override public void onSuccess(ResultSet result) { latch.countDown(); } @Override public void onFailure(Throwable t) { logger.warn("There was an error inserting data", t); latch.countDown(); } }; Stopwatch stopwatch = new Stopwatch().start(); BatchStatement batch = new BatchStatement(); for (int i = 0; i < NUM_INSERTS; ++i) { String metricId = "metric-" + Math.abs(random.nextInt() % NUM_METRICS); double value = random.nextDouble(); batch.add(insert.bind(metricId, time.toDate(), value)); time = time.plusSeconds(10); if (batch.size() == BATCH_SIZE) { ResultSetFuture future = session.executeAsync(batch); Futures.addCallback(future, callback); batch = new BatchStatement(); } } latch.await(); stopwatch.stop(); logger.info("Finished inserting {} data points in {} ms", NUM_INSERTS, stopwatch.elapsed(TimeUnit.MILLISECONDS)); } catch (InterruptedException e) { logger.info("There was an interrupt while waiting for inserts to complete"); } }
From source file:com.facebook.presto.operator.NestedLoopJoinPagesSupplier.java
public void release() { if (referenceCount.decrementAndGet() == 0) { // We own the shared pageSource, so we need to free their memory Futures.addCallback(pagesFuture, new FutureCallback<NestedLoopJoinPages>() { @Override/* w ww.ja v a 2s . c o m*/ public void onSuccess(NestedLoopJoinPages result) { result.freeMemory(); } @Override public void onFailure(Throwable t) { // ignored } }); } }
From source file:com.github.nethad.clustermeister.example.async.AsyncTasks.java
private void execute() { try {/*from w w w. j ava2 s .c o m*/ if (clustermeister == null) { clustermeister = ClustermeisterFactory.create(); } Job<String> job = JobFactory.create("CM AsyncTasks", null); for (int i = 0; i < NUMBER_OF_TASKS; i++) { job.addTask(new ReturnNumberTaskWithSleep(i, 2000)); } List<ListenableFuture<String>> resultFutures = clustermeister.executeJobAsyncTasks(job); FutureCallback<String> callback = new FutureCallback<String>() { public void onSuccess(String result) { logger.info("Got result {}", result); monitor.enter(); try { callbackCounter.incrementAndGet(); } finally { monitor.leave(); } } public void onFailure(Throwable t) { logger.warn("Failure.", t); monitor.enter(); try { callbackCounter.incrementAndGet(); } finally { monitor.leave(); } } }; for (ListenableFuture<String> listenableFuture : resultFutures) { Futures.addCallback(listenableFuture, callback); } logger.info("Registered callback, waiting for it to be finished."); monitor.enter(); try { monitor.waitFor(futureCallbackGuard); logger.info("Future callback done."); } finally { monitor.leave(); } } catch (Exception ex) { logger.warn("Exception while executing example.", ex); } finally { if (clustermeister != null) { logger.info("Shutting down."); clustermeister.shutdown(); } } }
From source file:com.spotify.apollo.test.experimental.ResponseTimeMetric.java
private <T> FutureCallback<T> createCallback(final long t0, final int rate) { activeTracked.incrementAndGet();// w w w . j a v a 2s. c o m return new FutureCallback<T>() { @Override public void onSuccess(T result) { long elapsed = nanoTime() - t0; responseTimes.offer(elapsed); totalResponses.incrementAndGet(); activeTracked.decrementAndGet(); if (callback != null) { callback.apply(new CallResult(elapsed, true, rate)); } } @Override public void onFailure(Throwable t) { LOG.error("Failed execution", t); totalResponses.incrementAndGet(); totalFailed.incrementAndGet(); activeTracked.decrementAndGet(); } }; }
From source file:com.github.nethad.clustermeister.example.async.Async.java
private void execute() { try {// ww w . j a v a 2 s . c om if (clustermeister == null) { clustermeister = ClustermeisterFactory.create(); } Job<Integer> job = JobFactory.create("CM Async", null); for (int i = 0; i < NUMBER_OF_TASKS; i++) { job.addTask(new ReturnNumberTask(i)); } ListenableFuture<List<Integer>> resultFuture = clustermeister.executeJobAsync(job); logger.info("Returns immediately"); Futures.addCallback(resultFuture, new FutureCallback<List<Integer>>() { public void onSuccess(List<Integer> result) { logger.info("Got list successfully, it contains {} items.", result.size()); String resultAsString = Joiner.on(", ").useForNull("null").join(result); logger.info("Result: {}", resultAsString); monitor.enter(); try { futureCallbackDone.set(true); } finally { monitor.leave(); } } public void onFailure(Throwable t) { logger.info("Could not execute job.", t); try { futureCallbackDone.set(true); } finally { monitor.leave(); } } }); logger.info("Registered callback, waiting for it to be finished."); monitor.enter(); try { monitor.waitFor(futureCallbackGuard); logger.info("Future callback done."); } finally { monitor.leave(); } } catch (Exception ex) { logger.warn("Exception while executing example.", ex); } finally { if (clustermeister != null) { logger.info("Shutting down."); clustermeister.shutdown(); } } }
From source file:com.spotify.futures.FuturesExtra.java
/** * Returns a future that fails with a {@link TimeoutException} if the parent future has not * finished before the timeout. The new returned future will always be executed on the provided * scheduledExecutorService, even when the parent future does not timeout. * * @param scheduledExecutorService executor that runs the timeout code. If the future times out, * this is also the thread any callbacks will run on. * @param future the future to wrap as a timeout future. * @param timeout how long to wait before timing out a future * @param unit unit of the timeout * @return a future that may timeout before the parent future is done. *//*www . j av a 2 s . c o m*/ public static <T> ListenableFuture<T> makeTimeoutFuture(ScheduledExecutorService scheduledExecutorService, ListenableFuture<T> future, final long timeout, final TimeUnit unit) { final SettableFuture<T> promise = SettableFuture.create(); scheduledExecutorService.schedule(new Runnable() { @Override public void run() { String message = "Future timed out after " + timeout + " " + unit.name(); promise.setException(new TimeoutException(message)); } }, timeout, unit); Futures.addCallback(future, new FutureCallback<T>() { @Override public void onSuccess(T result) { promise.set(result); } @Override public void onFailure(Throwable t) { promise.setException(t); } }, scheduledExecutorService); return promise; }
From source file:org.opendaylight.nic.gbp.renderer.impl.GBPRenderer.java
private void deleteNode(InstanceIdentifier<?> iid) { WriteTransaction writeTransactionNodes = dataBroker.newWriteOnlyTransaction(); writeTransactionNodes.delete(LogicalDatastoreType.OPERATIONAL, iid); Futures.addCallback(writeTransactionNodes.submit(), new FutureCallback<Void>() { @Override/*from w w w. j a v a2s . c om*/ public void onSuccess(Void result) { LOG.debug("Delete result: " + result); } @Override public void onFailure(Throwable throwable) { LOG.error("Delete failed", throwable); } }); }
From source file:org.anhonesteffort.p25.chnlzr.SamplesSourceHandler.java
public SamplesSourceHandler(ChannelHandlerContext context, Capabilities.Reader capabilities, ChannelState.Reader state) { this.capabilities = capabilities; this.state = state; closePromise = SettableFuture.create(); context.channel().closeFuture().addListener(close -> { if (close.isSuccess()) { closePromise.set(null);/*from w w w.ja v a 2 s . c o m*/ } else { closePromise.setException(close.cause()); } }); Futures.addCallback(closePromise, new FutureCallback<Void>() { @Override public void onSuccess(Void aVoid) { context.close(); } @Override public void onFailure(@Nonnull Throwable error) { context.close(); } }); }