File FaultSimulator.java¶
File List > behaviour > evals > FaultSimulator.java
Go to the documentation of this file
package skydata.behaviour.evals;
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.SKAID;
import skydata.internal.message.SKLMessage;
public class FaultSimulator extends SKAgentBehaviour {
private SKAID creator;
public FaultSimulator(SKAgent agent) {
super(agent);
String name = (String)agent.args.get("failure_creator");
String harbourPosition = name.split("@")[1];
for(SKAID h : agent.connectedHarbours()) {
if(h.getName().split("@")[1].equals(harbourPosition)) {
creator = new SKAID(name, h.getAddress());
agent.print("found");
break;
}
}
agent.print(creator.toString());
}
@Override
public void action() {
SKD agent = (SKD)this.agent;
SKLMessage announce = new SKLMessage("ANNOUNCE", "FAILURE_SIMULATOR");
announce.addReceiver(creator);
agent.skSendNormal(announce);
agent.addBehaviour(new TickerBehaviour(agent, 5000) {
@Override
public void onTick() {
SKLMessage request = new SKLMessage("REQUEST", "FAILURE_SIMULATOR");
request.addReceiver(creator);
agent.skSendNormal(request);
}
});
MessageTemplate mtAnnounce = MessageTemplate.and(
MessageTemplate.MatchOntology("ANSWER"),
MessageTemplate.and(
MessageTemplate.MatchPerformative(ACLMessage.INFORM),
MessageTemplate.MatchProtocol("FAILURE_SIMULATOR")));
agent.addBehaviour(new CyclicBehaviour(agent) {
@Override
public void action() {
SKLMessage acl = agent.skReceive(mtAnnounce);
if (acl == null) {
block();
return;
}
if((Boolean)acl.getContent()) {
agent.print("[CRASH]");
int a = 1/0;
}
}
});
}
}