Skip to content

File Logger.java

File List > behaviour > evals > Logger.java

Go to the documentation of this file

package skydata.behaviour.evals;

import jade.core.behaviours.CyclicBehaviour;
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;

public class Logger extends SKAgentBehaviour {

    public Logger(SKAgent agent) {
        super(agent);
    }

    @Override
    public void action() {
        agent.addInternalUpdate("AFTER_MIGRATION", new SKAgentBehaviour(agent) {
            @Override
            public void action() {
                agent.print("[AFTER_MIGRATION]" + agent.getSKAID().getAddress());
            }
        });

        agent.addInternalUpdate("AFTER_REPLICATION", new SKAgentBehaviour(agent) {
            @Override
            public void action() {
                agent.print("[AFTER_REPLICATION]" + agent.getSKAID().getAddress());
            }
        });

        agent.addInternalUpdate("DELETION", new SKAgentBehaviour(agent) {
            @Override
            public void action() {
                agent.print("[DELETION]");
            }
        });

        SKAgentBehaviour b = new SKAgentBehaviour(agent) {
            @Override
            public void action() {
                agent.print("[FAMILY-LOG]" + ((SKD) agent).getFamilyString());
            }

            @Override
            public void actionWithParameters(Object o) {
                agent.print("[FAMILY-LOG]" + ((SKD) agent).getFamilyString());
            }
        };

        agent.addInternalUpdate("FAMILY_UPDATE", b);
        agent.addInternalUpdate("FAMILY_ADDED", b);
        agent.addInternalUpdate("FAMILY_REMOVED", b);

        MessageTemplate mtError = MessageTemplate.not(MessageTemplate.MatchPerformative(ACLMessage.INFORM));
        agent.addBehaviour(new CyclicBehaviour(agent) {
            public void action() {
                ACLMessage message = agent.receive(mtError);
                if (message == null) {
                    block();
                    return;
                }

            }
        });
    }
}