/** * abbreviation for Promise creation to make code more concise * */ public static <T> IPromise<T> complete( T res, Object err ) { return new Promise<>(res,err); }
/** * abbreviation for Promise creation to make code more concise * * @param res * @param <T> * @return */ public static <T> IPromise<T> resolve( T res ) { return new Promise<>(res); }
/** * abbreviation for Promise creation to make code more concise * */ public static IPromise resolve() { return new Promise<>("dummy"); }
/** * shorthand constructor * @param <T> * @return */ public static <T> Promise<T> promise() { return new Promise<>(); }
/** * can be used to wait for all messages having been processed and get a signal from the returned future once this is complete * @return */ public IPromise ping() { return new Promise<>(0); }
@Override public IPromise<Monitorable[]> getSubMonitorables() { return new Promise<>(new Monitorable[] { myThread } ); } }
/** * abbreviation for Promise creation to make code more concise * */ public static <T> IPromise<T> reject( Object err ) { return new Promise<>(null,err); }
/** * abbreviation for Promise creation to make code more concise * */ public static IPromise complete() { return new Promise<>("dummy"); }
/** * disconnect callback will never be called (local actor connection) * @param <T> * @param disconnectCallback * @param actorDisconnecCB * @return */ @Override public <T extends Actor> IPromise<T> connect(Callback<ActorClientConnector> disconnectCallback, Consumer<Actor> actorDisconnecCB) { return new Promise<>((T) actor); }
/** * similar to es6 Promise.all method, however non-IPromise objects are not allowed * * returns a future which is settled once all promises provided are settled * */ public static <T> IPromise<IPromise<T>[]> all(IPromise<T>... futures) { Promise res = new Promise(); awaitSettle(futures, res); return res; }
/** * similar to es6 Promise.all method, however non-IPromise objects are not allowed * * returns a future which is settled once all promises provided are settled * */ public static <T> IPromise<List<IPromise<T>>> all(List<IPromise<T>> futures) { Promise res = new Promise(); awaitSettle(futures, res); return res; }
@Override public void connect(Actor facade, Function<ObjectSocket, ObjectSink> factory) throws Exception { Promise p = new Promise(); new Thread( () -> acceptLoop(facade,port,factory,p), "acceptor thread "+port ).start(); p.await(); }
@Override public void connect(Actor facade, Function<ObjectSocket, ObjectSink> factory) throws Exception { Promise p = new Promise(); new Thread( () -> acceptLoop(facade,port,factory,p), "acceptor thread "+port ).start(); p.await(); }
public Promise<Boolean> unSubscribe(int id, Callback cb) { Callback removed = getSubsMap().remove(id); if ( removed != null ) // ensure remote mapping is cleaned up removed.finish(); return new Promise( removed != null ); }
public Promise<Boolean> unSubscribe(int id, Callback cb) { Callback removed = getSubsMap().remove(id); if ( removed != null ) // ensure remote mapping is cleaned up removed.finish(); return new Promise( removed != null ); }
@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; }
public IPromise closeNetwork() { if ( server != null ) return server.close(); else { Log.Warn(null, "failed closing underlying network connection as server is null"); return new Promise<>(null,"server is null"); } }
public Promise<Integer> createSubsId() { int id = (int) (Math.random()*Integer.MAX_VALUE); if ( getSubsMap().containsKey(id) ) return createSubsId(); getSubsMap().put(id,new DummyCB()); return new Promise<>(id); }
@Override public IPromise closeServer() { getServer(port).getSecond().stop(); return new Promise(null); }