Skip to content

File RegularlyUpdateKnowledge.java

File List > behaviours > RegularlyUpdateKnowledge.java

Go to the documentation of this file

package skydata.internal.behaviours;

import java.io.IOException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.io.Serializable;

import jade.lang.acl.ACLMessage;
import jade.core.behaviours.TickerBehaviour;
import skydata.internal.agents.SKAgent;
import skydata.internal.agents.SKD;
import skydata.internal.message.SKAID;
import skydata.internal.message.SKLMessage;

public class RegularlyUpdateKnowledge extends SKAgentBehaviour {

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

    public Set<SKAID> copySet(Set<SKAID> set) {
        Set<SKAID> copiedSet = new HashSet<SKAID>();
        for (SKAID m : set) {
            copiedSet.add((SKAID) m);
        }
        return copiedSet;
    }

    @Override
    public void action() {
        SKD agent = (SKD) this.agent;
        Set<SKAID> family = agent.getFamily();
        Set<SKAID> deletedFamilyMembers = agent.getDeletedFamilyMembers();
        Map<String, Set<SKAID>> Message = new HashMap<>();
        agent.addBehaviour(new TickerBehaviour(agent, 2000) {
            @Override
            public void onTick() {
                if (family == null || family.size() == 0)
                    return;
                SKLMessage msg = new SKLMessage("UPDATE_FAMILY_INFORM", "MANAGE_FAMILY");
                Message.put("family", family);
                Message.put("deleted", deletedFamilyMembers);
                msg.setContent((Serializable) new HashMap<String, Set<SKAID>>(Message));
                agent.broadcastFamily(msg);
            }
        });
    }

}