use of abs.backend.java.lib.net.msg.CallMsg in project abstools by abstools.
the class ABSNetRuntime method asyncCall.
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public <T extends ABSRef> ABSFut<?> asyncCall(AsyncCall<T> call) {
Promise p = new PromiseImpl();
NetFut<? super ABSValue> fut = null;
if (getCurrentNetCOG() != null) {
fut = new NetFut(p);
getCurrentNetCOG().registerFuture(fut);
}
getCurrentNode().processMsg(new CallMsg(p, call));
return fut;
}
use of abs.backend.java.lib.net.msg.CallMsg in project abstools by abstools.
the class NetCOG method processMsg.
synchronized void processMsg(Msg msg) {
if (msg instanceof CallMsg) {
CallMsg cm = (CallMsg) msg;
// FIXME: create task and replace promises with futures
Task<?> task = new Task(cm.call);
addTask(task);
} else {
PromiseMsg pm = (PromiseMsg) msg;
promises.put(pm.promise, pm.value);
ABSFut<? super ABSValue> f = futureMap.get(pm.promise);
if (f != null) {
f.resolve(pm.value);
}
}
}
Aggregations