@Override public T get() { if (realCallback instanceof IPromise == false) return null; else return (T) ((IPromise)realCallback).get(); }
@Override public T get() { if (realCallback instanceof IPromise == false) return null; else return (T) ((IPromise)realCallback).get(); }
/** * helper to stream settled futures unboxed. e.g. all(f1,f2,..).then( farr -> stream(farr).forEach( val -> process(val) ); * Note this can be used only on "settled" or "completed" futures. If one of the futures has been rejected, * a null value is streamed. * * @param completedPromises * @param <T> * @return */ private static <T> Stream<T> streamHelper(IPromise<T>... completedPromises) { return Arrays.stream(completedPromises).map(future -> future.get()); }
/** * helper to stream settled futures unboxed. e.g. all(f1,f2,..).then( farr -> stream(farr).forEach( val -> process(val) ); * Note this can be used only on "settled" or "completed" futures. If one of the futures has been rejected, * a null value is streamed. * * @param completedPromises * @param <T> * @return */ private static <T> Stream<T> streamHelper(IPromise<T>... completedPromises) { return Arrays.stream(completedPromises).map(future -> future.get()); }
private static <T> Stream<T> streamHelper(List<IPromise<T>> completedPromises) { return completedPromises.stream().map(future -> future.get()); }
private static <T> Stream<T> streamHelper(List<IPromise<T>> completedPromises) { return completedPromises.stream().map(future -> future.get()); }
@Override public IPromise<Long> size() { Promise result = new Promise(); Actors.all(shards.stream().map( shard -> shard.size() ).collect(Collectors.toList())) .then( longPromisList -> { long sum = longPromisList.stream().mapToLong(prom -> prom.get()).sum(); result.resolve(sum); }); return result; }
@Override public IPromise<StorageStats> getStats() { Promise res = new Promise(); try { Actors.all(shards.stream().map( shard -> shard.getStats() ).collect(Collectors.toList())) .then( (shardStats,err) -> { if (shardStats!=null) { StorageStats stats = new StorageStats(); shardStats.stream().map( fut -> fut.get() ).forEach( nodeStats -> nodeStats.addTo(stats)); res.resolve(stats); } else { res.reject(err); } }); } catch (Exception e) { Log.Warn(this,e); res.reject(e); } return res; }