File TestCohesion.java¶
File List > behaviour > evals > TestCohesion.java
Go to the documentation of this file
package skydata.behaviour.evals;
import java.time.Instant;
import jade.core.behaviours.CyclicBehaviour;
import jade.core.behaviours.TickerBehaviour;
import jade.lang.acl.ACLMessage;
import jade.lang.acl.MessageTemplate;
import skydata.internal.agents.SKAgent;
import skydata.internal.agents.SKD;
import skydata.internal.behaviours.SKAgentBehaviour;
import skydata.internal.message.SKLMessage;
public class TestCohesion extends SKAgentBehaviour {
public TestCohesion(SKAgent agent) {
super(agent);
}
@Override
public void action() {
SKD agent = (SKD) this.agent;
// I send the test message
TickerBehaviour tickerBehaviour = new TickerBehaviour(agent, 1000) {
@Override
public void onTick() {
if (agent.getFamily().size() == 1) {
return;
}
agent.print("[COHESION_SEND] " + (agent.getFamilySize() - 1));
SKLMessage msg = new SKLMessage("TEST", "COHESION");
msg.setContent(Instant.now().toEpochMilli());
agent.broadcastFamily(msg, false);
}
};
agent.addBehaviour(tickerBehaviour);
// I receive a test message
MessageTemplate mtTest = MessageTemplate.and(
MessageTemplate.MatchOntology("TEST"),
MessageTemplate.and(
MessageTemplate.MatchPerformative(ACLMessage.INFORM),
MessageTemplate.MatchProtocol("COHESION")));
agent.addBehaviour(new CyclicBehaviour(agent) {
@Override
public void action() {
SKLMessage acl = agent.skReceive(mtTest);
if (acl == null) {
block();
return;
}
agent.print("[COHESION_RECEIVE]");
}
});
}
}