use of abs.backend.java.lib.net.msg.COGMsg in project abstools by abstools.
the class NodeImpl method processMsg.
@Override
public synchronized void processMsg(Msg m) {
if (m instanceof ObjectTargetMsg) {
ObjectTargetMsg otm = (ObjectTargetMsg) m;
if (objects.contains(otm.getTarget())) {
NetCOG cog = (NetCOG) otm.getTarget().getCOG();
cog.processMsg(m);
} else {
routeAway(m);
}
} else if (m instanceof COGMsg) {
COGMsg cm = (COGMsg) m;
NetCOG cog = cm.getCOG();
cog.setNode(this);
cogs.add(cog);
} else if (m instanceof ObjectMsg) {
ObjectMsg om = (ObjectMsg) m;
ABSObject object = om.getObject();
NetCOG cog = (NetCOG) object.getCOG();
if (cogs.contains(cog)) {
objects.add(object);
} else {
routeAway(m);
}
}
}
use of abs.backend.java.lib.net.msg.COGMsg in project abstools by abstools.
the class NodeImplTest method processCOGMsg.
@Test
public void processCOGMsg() {
COGMsg msg = createMock(COGMsg.class);
expect(msg.getCOG()).andReturn(cog);
cog.setNode(currentNode);
expectLastCall();
currentRouter.replace(cog, currentNode, 0);
expectLastCall();
replay(msg);
replay(cog);
replay(currentRouter);
currentNode.processMsg(msg);
assertTrue("cog must be at node", currentNode.getRegisteredCOGs().contains(cog));
verify(msg);
verify(cog);
verify(currentRouter);
}
use of abs.backend.java.lib.net.msg.COGMsg in project abstools by abstools.
the class NodeImpl method migrateGroup.
private synchronized boolean migrateGroup() {
if (random.nextBoolean())
return false;
if (cogs.isEmpty())
return false;
NetCOG cog = cogs.iterator().next();
cogs.remove(cog);
ArcImpl arc = outArcs.values().iterator().next();
arc.getQueue().enqueue(new COGMsg(cog));
return true;
}
Aggregations