List of usage examples for com.google.common.util.concurrent SettableFuture set
@Override public boolean set(@Nullable V value)
From source file:com.continuuity.weave.zookeeper.ZKOperations.java
/** * Watch for the given path until it exists. * @param zkClient The {@link ZKClient} to use. * @param path A ZooKeeper path to watch for existent. *///from w w w . j a v a 2s .c o m private static void watchExists(final ZKClient zkClient, final String path, final SettableFuture<String> completion) { Futures.addCallback(zkClient.exists(path, new Watcher() { @Override public void process(WatchedEvent event) { if (!completion.isDone()) { watchExists(zkClient, path, completion); } } }), new FutureCallback<Stat>() { @Override public void onSuccess(Stat result) { if (result != null) { completion.set(path); } } @Override public void onFailure(Throwable t) { completion.setException(t); } }); }
From source file:com.continuuity.loom.common.zookeeper.ZKClientExt.java
/** * Acts as {@link ZKClient#create(String, byte[], org.apache.zookeeper.CreateMode, boolean)} if node does not exist, * otherwise as {@link ZKClient#setData(String, byte[])}. *///ww w . j a va2 s . c om public static ListenableFuture<SetResult> createOrSet(final ZKClient zkClient, final String path, @Nullable final byte[] data, final CreateMode createMode, final boolean createParent) { final SettableFuture<SetResult> resultFuture = SettableFuture.create(); final OperationFuture<String> createResult = zkClient.create(path, data, createMode, createParent); Futures.addCallback(createResult, new FutureCallback<String>() { private final FutureCallback<String> createCallback = this; @Override public void onSuccess(String result) { resultFuture.set(new SetResult(result, null)); } @Override public void onFailure(Throwable t) { if (causedBy(t, KeeperException.NodeExistsException.class)) { OperationFuture<Stat> setDataResult = zkClient.setData(path, data); Futures.addCallback(setDataResult, new FutureCallback<Stat>() { @Override public void onSuccess(Stat result) { resultFuture.set(new SetResult(null, result)); } @Override public void onFailure(Throwable t) { if (causedBy(t, KeeperException.NoNodeException.class)) { Futures.addCallback(zkClient.create(path, data, createMode, createParent), createCallback); return; } resultFuture.setException(t); } }); return; } resultFuture.setException(t); } }); return resultFuture; }
From source file:io.datakernel.service.ServiceAdapters.java
/** * Returns factory which transforms ExecutorService to ConcurrentService. On starting it doing nothing, on stopping it shuts down ExecutorService. *//*from w w w . j a v a 2 s . com*/ public static ServiceAdapter<ExecutorService> forExecutorService() { return new ServiceAdapter<ExecutorService>() { @Override public Service toService(final ExecutorService executorService, final Executor executor) { return new Service() { @Override public ListenableFuture<?> start() { return Futures.immediateFuture(null); } @Override public ListenableFuture<?> stop() { final SettableFuture<?> future = SettableFuture.create(); executor.execute(new Runnable() { @Override public void run() { executorService.shutdown(); future.set(null); } }); return future; } }; } }; }
From source file:com.google.cloud.testing.BaseEmulatorHelper.java
private static int waitForProcess(final Process process, Duration timeout) throws InterruptedException, TimeoutException { if (process == null) { return 0; }/* w w w . java2 s .c o m*/ final SettableFuture<Integer> exitValue = SettableFuture.create(); Thread waiter = new Thread(new Runnable() { @Override public void run() { try { exitValue.set(process.waitFor()); } catch (InterruptedException e) { exitValue.setException(e); } } }); waiter.start(); try { return exitValue.get(timeout.toMillis(), TimeUnit.MILLISECONDS); } catch (ExecutionException e) { if (e.getCause() instanceof InterruptedException) { throw (InterruptedException) e.getCause(); } throw new UncheckedExecutionException(e); } finally { waiter.interrupt(); } }
From source file:io.datakernel.service.ServiceAdapters.java
public static ServiceAdapter<Eventloop> forEventloop(final ThreadFactory threadFactory) { return new ServiceAdapter<Eventloop>() { @Override/* www.j a va 2s. c o m*/ public Service toService(final Eventloop eventloop, final Executor executor) { return new Service() { volatile SettableFuture<?> stopFuture; @Override public ListenableFuture<?> start() { final SettableFuture<?> future = SettableFuture.create(); threadFactory.newThread(new Runnable() { @Override public void run() { eventloop.keepAlive(true); future.set(null); eventloop.run(); if (stopFuture != null) { stopFuture.set(null); } } }).start(); return future; } @Override public ListenableFuture<?> stop() { stopFuture = SettableFuture.create(); eventloop.execute(new Runnable() { @Override public void run() { eventloop.keepAlive(false); } }); return stopFuture; } }; } }; }
From source file:io.v.v23.InputChannels.java
private static <T> FutureCallback<T> newCallbackForDone(final InputChannel<T> channel, final SettableFuture<Void> future, final Executor executor) { return new FutureCallback<T>() { @Override// w ww . j av a 2 s . c o m public void onSuccess(T result) { Futures.addCallback(channel.recv(), newCallbackForDone(channel, future, executor), executor); } @Override public void onFailure(Throwable t) { if (t instanceof EndOfFileException) { future.set(null); } else { future.setException(t); } } }; }
From source file:org.dcache.space.ReservationCaches.java
/** * Builds a loading cache for looking up space tokens by owner and * description./*from ww w . j a v a 2s.c o m*/ */ public static LoadingCache<GetSpaceTokensKey, long[]> buildOwnerDescriptionLookupCache(CellStub spaceManager, Executor executor) { return CacheBuilder.newBuilder().maximumSize(1000).expireAfterWrite(30, SECONDS) .refreshAfterWrite(10, SECONDS).recordStats().build(new CacheLoader<GetSpaceTokensKey, long[]>() { @Override public long[] load(GetSpaceTokensKey key) throws Exception { try { return spaceManager.sendAndWait(createRequest(key)).getSpaceTokens(); } catch (TimeoutCacheException e) { throw new SRMInternalErrorException("Space manager timeout", e); } catch (InterruptedException e) { throw new SRMInternalErrorException("Operation interrupted", e); } catch (CacheException e) { _log.warn("GetSpaceTokens failed with rc={} error={}", e.getRc(), e.getMessage()); throw new SRMException( "GetSpaceTokens failed with rc=" + e.getRc() + " error=" + e.getMessage(), e); } } private GetSpaceTokens createRequest(GetSpaceTokensKey key) { GetSpaceTokens message = new GetSpaceTokens(key.description); message.setSubject( new Subject(true, key.principals, Collections.emptySet(), Collections.emptySet())); return message; } @Override public ListenableFuture<long[]> reload(GetSpaceTokensKey key, long[] oldValue) throws Exception { final SettableFuture<long[]> future = SettableFuture.create(); CellStub.addCallback(spaceManager.send(createRequest(key)), new AbstractMessageCallback<GetSpaceTokens>() { @Override public void success(GetSpaceTokens message) { future.set(message.getSpaceTokens()); } @Override public void failure(int rc, Object error) { CacheException exception = CacheExceptionFactory.exceptionOf(rc, Objects.toString(error, null)); future.setException(exception); } }, executor); return future; } }); }
From source file:io.datakernel.service.ServiceAdapters.java
/** * Returns factory which transforms Closeable object to ConcurrentService. On starting it doing nothing, on stopping it close Closeable. *///from ww w. jav a 2 s .co m public static ServiceAdapter<Closeable> forCloseable() { return new ServiceAdapter<Closeable>() { @Override public Service toService(final Closeable closeable, final Executor executor) { return new Service() { @Override public ListenableFuture<?> start() { return Futures.immediateFuture(null); } @Override public ListenableFuture<?> stop() { final SettableFuture<?> future = SettableFuture.create(); executor.execute(new Runnable() { @Override public void run() { try { closeable.close(); future.set(null); } catch (IOException e) { future.setException(e); } } }); return future; } }; } }; }
From source file:org.dcache.space.ReservationCaches.java
/** * Build a loading cache for looking up space reservations by space token. *///from w w w. ja va 2s.c o m public static LoadingCache<String, Optional<Space>> buildSpaceLookupCache(CellStub spaceManager, Executor executor) { return CacheBuilder.newBuilder().maximumSize(1000).expireAfterWrite(10, MINUTES) .refreshAfterWrite(30, SECONDS).recordStats().build(new CacheLoader<String, Optional<Space>>() { @Override public Optional<Space> load(String token) throws CacheException, NoRouteToCellException, InterruptedException { Space space = spaceManager.sendAndWait(new GetSpaceMetaData(token)).getSpaces()[0]; return Optional.ofNullable(space); } @Override public ListenableFuture<Optional<Space>> reload(String token, Optional<Space> oldValue) { final SettableFuture<Optional<Space>> future = SettableFuture.create(); CellStub.addCallback(spaceManager.send(new GetSpaceMetaData(token)), new AbstractMessageCallback<GetSpaceMetaData>() { @Override public void success(GetSpaceMetaData message) { future.set(Optional.ofNullable(message.getSpaces()[0])); } @Override public void failure(int rc, Object error) { CacheException exception = CacheExceptionFactory.exceptionOf(rc, Objects.toString(error, null)); future.setException(exception); } }, executor); return future; } }); }
From source file:org.dcache.space.ReservationCaches.java
/** * Cache queries to discover if a directory has the "WriteToken" tag set. *//* w ww .ja v a 2 s .c om*/ public static LoadingCache<FsPath, java.util.Optional<String>> buildWriteTokenLookupCache(PnfsHandler pnfs, Executor executor) { return CacheBuilder.newBuilder().maximumSize(1000).expireAfterWrite(10, MINUTES) .refreshAfterWrite(5, MINUTES).recordStats() .build(new CacheLoader<FsPath, java.util.Optional<String>>() { private java.util.Optional<String> writeToken(FileAttributes attr) { StorageInfo info = attr.getStorageInfo(); return java.util.Optional.ofNullable(info.getMap().get("writeToken")); } @Override public java.util.Optional<String> load(FsPath path) throws CacheException, NoRouteToCellException, InterruptedException { return writeToken(pnfs.getFileAttributes(path, EnumSet.of(FileAttribute.STORAGEINFO))); } @Override public ListenableFuture<java.util.Optional<String>> reload(FsPath path, java.util.Optional<String> old) { PnfsGetFileAttributes message = new PnfsGetFileAttributes(path.toString(), EnumSet.of(FileAttribute.STORAGEINFO)); SettableFuture<java.util.Optional<String>> future = SettableFuture.create(); CellStub.addCallback(pnfs.requestAsync(message), new AbstractMessageCallback<PnfsGetFileAttributes>() { @Override public void success(PnfsGetFileAttributes message) { future.set(writeToken(message.getFileAttributes())); } @Override public void failure(int rc, Object error) { CacheException exception = CacheExceptionFactory.exceptionOf(rc, Objects.toString(error, null)); future.setException(exception); } }, executor); return future; } }); }