Search in sources :

Example 1 with CallMsg

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;
}
Also used : CallMsg(abs.backend.java.lib.net.msg.CallMsg)

Example 2 with CallMsg

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);
        }
    }
}
Also used : PromiseMsg(abs.backend.java.lib.net.msg.PromiseMsg) Task(abs.backend.java.lib.runtime.Task) CallMsg(abs.backend.java.lib.net.msg.CallMsg)

Aggregations

CallMsg (abs.backend.java.lib.net.msg.CallMsg)2 PromiseMsg (abs.backend.java.lib.net.msg.PromiseMsg)1 Task (abs.backend.java.lib.runtime.Task)1