package fr.utc.leapband.sma.user;
import jade.core.AID;
import jade.core.behaviours.Behaviour;
import jade.lang.acl.ACLMessage;
import jade.lang.acl.MessageTemplate;
import fr.utc.leapband.utilities.Constance;
@SuppressWarnings("serial")
public class ExitGroupBehaviour extends Behaviour{
private UserAgent myAgent;
private ACLMessage msg;
private boolean first = true;
private boolean done = false;
private String msg_conversation = null;
public ExitGroupBehaviour(UserAgent myAgent, String content) {
super();
this.myAgent = myAgent;
this.msg=new ACLMessage(ACLMessage.CANCEL);
msg_conversation = content;
System.out.println("Exit room behaviour created");
}
@Override
public void action() {
if (first) {
AID server_name = myAgent.getServerName();
if (server_name != null){
msg.addReceiver(server_name);
msg.setContent(Constance.ExitGroupMode);
msg.setConversationId(msg_conversation);
myAgent.send(msg);
first = false;
System.out.println("Ask for quiting a room sent");
} else {
System.out.println("server not found");
}
} else {
MessageTemplate mt = MessageTemplate.and(MessageTemplate.MatchPerformative(ACLMessage.CONFIRM),
MessageTemplate.and(MessageTemplate.MatchContent(Constance.ROOM_QUITTED), MessageTemplate.MatchConversationId(msg_conversation)));
ACLMessage message=myAgent.receive(mt);
if(message != null){
myAgent.addBehaviour(new ModeSelectBehaviour(myAgent, UserAgent.Exit_Room_Mode));
done = true;
System.out.println("room quitted, behaviour done");
myAgent.setRoomId(null);
}
}
}
@Override
public boolean done() {
return done;
}
}