| package net.floodlightcontroller.topology; |
| |
| import java.util.HashMap; |
| import java.util.HashSet; |
| import java.util.Map; |
| import java.util.Set; |
| |
| import net.floodlightcontroller.routing.Link; |
| |
| import org.openflow.util.HexString; |
| |
| public class Cluster { |
| protected long id; // the lowest id of the nodes |
| protected Map<Long, Set<Link>> links; // set of links connected to a node. |
| |
| public Cluster() { |
| id = Long.MAX_VALUE; |
| links = new HashMap<Long, Set<Link>>(); |
| } |
| |
| public long getId() { |
| return id; |
| } |
| |
| public void setId(long id) { |
| this.id = id; |
| } |
| |
| public Map<Long, Set<Link>> getLinks() { |
| return links; |
| } |
| |
| public Set<Long> getNodes() { |
| return links.keySet(); |
| } |
| |
| void add(long n) { |
| if (links.containsKey(n) == false) { |
| links.put(n, new HashSet<Link>()); |
| if (n < id) id = n; |
| } |
| } |
| |
| void addLink(Link l) { |
| if (links.containsKey(l.getSrc()) == false) { |
| links.put(l.getSrc(), new HashSet<Link>()); |
| if (l.getSrc() < id) id = l.getSrc(); |
| } |
| links.get(l.getSrc()).add(l); |
| |
| if (links.containsKey(l.getDst()) == false) { |
| links.put(l.getDst(), new HashSet<Link>()); |
| if (l.getDst() < id) id = l.getDst(); |
| } |
| links.get(l.getDst()).add(l); |
| } |
| |
| @Override |
| public int hashCode() { |
| return (int) (id + id >>>32); |
| } |
| |
| @Override |
| public boolean equals(Object obj) { |
| if (this == obj) |
| return true; |
| if (obj == null) |
| return false; |
| if (getClass() != obj.getClass()) |
| return false; |
| |
| Cluster other = (Cluster) obj; |
| return (this.id == other.id); |
| } |
| |
| public String toString() { |
| return "[Cluster id=" + HexString.toHexString(id) + ", " + links.keySet() + "]"; |
| } |
| } |