package siebog.agents; import java.io.Serializable; import javax.ejb.Remote; import javax.ejb.Stateful; import javax.inject.Inject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import siebog.SiebogClient; import siebog.interaction.ACLMessage; import siebog.interaction.bsp.BarrierManager; import siebog.interaction.bsp.OnSuperstep; import siebog.interaction.bsp.Superstep; @Stateful @Remote(Agent.class) public class BSPAgent extends XjafAgent { private static final long serialVersionUID = 1L; private static final Logger LOG = LoggerFactory.getLogger(BSPAgent.class); private static final String BARRIER_ID = "default"; @Inject private BarrierManager barrierManager; @Override protected void onInit(AgentInitArgs args) { barrierManager.register(BARRIER_ID, myAid); } @Override protected void onTerminate() { barrierManager.deregister(BARRIER_ID, myAid); } @OnSuperstep(barrier = BARRIER_ID) public void onSuperstep(Superstep superstep, Serializable param) { LOG.info("Agent {} executing superstep #{}.", myAid.getName(), superstep.getCounter()); } @Override protected void onMessage(ACLMessage msg) { Superstep superstep = ((Superstep) msg.contentObj); LOG.info("Agent {} executing superstep #{}.", myAid.getName(), superstep.getCounter()); barrierManager.agentCompletedSuperstep(superstep, myAid); } public static void main(String[] args) { SiebogClient.connect("192.168.213.1", "192.168.213.129"); AgentBuilder.siebog().ejb(BSPAgent.class).startNInstances(2); } }