123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- package classes.holonControlUnit;
- import java.util.ArrayList;
- import java.util.HashSet;
- import java.util.Set;
- import classes.Holon;
- import classes.holonControlUnit.messages.NeighborhoodMsg;
- public class HierarchyControlUnit {
- private HolonControlUnit hcu;
- private ArrayList<String> subHolons;
- private ArrayList<String> physicalNeighbors;
- private ArrayList<String> virtualNeighbors;
-
- public HierarchyControlUnit(HolonControlUnit hcu) {
- this.hcu = hcu;
- this.subHolons = new ArrayList();
- this.physicalNeighbors = new ArrayList();
-
- this.virtualNeighbors = new ArrayList();
- // if(h.getParent() != null)
- // this.virtualNeighbors.addAll(h.getParent().childHolons);
- // System.out.println("created hcu for holon "+h.name);
- // System.out.println("\tsuperholon"+(h.getParent() != null ? h.getParent().name : ""));
- // System.out.println("\tsubholons"+h.childHolons.toString());
- // System.out.println("\tvirtual neighbors"+this.virtualNeighbors.toString());
- // System.out.println("\tphysical neighbors"+this.physicalNeighbors.toString());
- }
-
- public ArrayList<String> getPhysicalNeighbors() {
- return physicalNeighbors;
- }
- public void setPhysicalNeighbors(ArrayList<String> physicalNeighbors) {
- this.physicalNeighbors = physicalNeighbors;
- }
-
- public void addPhysicalNeighbor(String physicalNeighbor) {
- this.physicalNeighbors.add(physicalNeighbor);
- }
- public ArrayList<String> getVirtualNeighbors() {
- return virtualNeighbors;
- }
- public void setVirtualNeighbors(ArrayList<String> virtualNeighbors) {
- this.virtualNeighbors = virtualNeighbors;
- }
-
- public void addSubHolon(String subHolon) {
- // System.out.println("Holon "+this.hcu.getHolon().getUniqueID()+" adds sub-holon "+subHolon);
- //propagate new virtual neighbor for all subholons
- ArrayList<String> list = new ArrayList();
- list.add(subHolon);
- String body = this.hcu.getCommunicator().getGson().toJson(new NeighborhoodMsg(NeighborhoodMsg.Type.NEW_VIRTUAL_NEIGHBOR, list));
- // System.out.println("list: "+list.toString()+" body "+body);
- for(String sub : this.subHolons) {
- this.hcu.getCommunicator().sendMsg(sub, CommunicationModule.MessageType.NEIGHBORHOOD, body);
- }
- if(this.subHolons.size() > 0) {
- body = this.hcu.getCommunicator().getGson().toJson(new NeighborhoodMsg(NeighborhoodMsg.Type.NEW_VIRTUAL_NEIGHBOR, this.subHolons));
- this.hcu.getCommunicator().sendMsg(subHolon, CommunicationModule.MessageType.NEIGHBORHOOD, body);
- }
-
- this.subHolons.add(subHolon);
- }
-
- public void removeSubHolon(String subHolon) {
- if(!this.subHolons.remove(subHolon))
- System.err.println("Could not remove sub holon "+subHolon);
- ArrayList<String> list = new ArrayList();
- list.add(subHolon);
- String body = this.hcu.getCommunicator().getGson().toJson(new NeighborhoodMsg(NeighborhoodMsg.Type.REMOVE_VIRTUAL_NEIGHBOR, list));
- for(String sub : this.subHolons) {
- this.hcu.getCommunicator().sendMsg(sub, CommunicationModule.MessageType.NEIGHBORHOOD, body);
- }
- }
-
- public ArrayList<String> getSubHolons() {
- return this.subHolons;
- }
-
- public void addVirtualNeighbor(String virtualNeighbor) {
- this.virtualNeighbors.add(virtualNeighbor);
- // System.out.println("Holon "+this.hcu.getHolon().getUniqueID()+" add virtual neighbor"+virtualNeighbor);
- }
-
- public void addVirtualNeighbors(ArrayList<String> virtualNeighbor) {
- this.virtualNeighbors.addAll(virtualNeighbor);
- // System.out.println("Holon "+this.hcu.getHolon().getUniqueID()+" add virtual neighbor"+virtualNeighbor);
- }
-
- public void removeVirtualNeighbor(String virtualNeighbor) {
- this.virtualNeighbors.remove(virtualNeighbor);
- }
- public void removeVirtualNeighbors(ArrayList<String> virtualNeighbor) {
- this.virtualNeighbors.removeAll(virtualNeighbor);
- }
- }
|