package jnetman.network; import java.net.InetAddress; import org.apache.log4j.Logger; public class IfCard { private String name; private Link link; private Node node; private InetAddress address; private short addrPrefixLenght = -1; protected Logger logger; private IfCardAgent manager; private long nominalSpeed = -1; private long peakSpeed = -1; protected IfCard(String name, Node node) { this.name = name; this.node = node; logger = Logger.getLogger("network.ifCard." + getHierarchicalName()); logger.debug("New interface card created"); } public String getName() { return this.name; } public String getHierarchicalName() { return this.node.getName() + "." + this.name; } public InetAddress getAddress() { return address; } public void setAddress(InetAddress address) { this.address = address; logger.debug("IP address updated >> " + address.getHostAddress()); } public short getAddrPrefixLenght() { return addrPrefixLenght; } public void setAddrPrefixLenght(short addrPrefixLenght) { this.addrPrefixLenght = addrPrefixLenght; logger.debug("Network prefix length updated >> " + addrPrefixLenght); } public Node getNode() { return this.node; } protected void setRouter(Node node) { this.node = node; } public void setLink(Link link) { this.link = link; } public Link getLink() { if (this.hasLink()) return this.link; else return null; } public boolean hasLink() { if (link != null) return true; else return false; } public IfCard getLinkEndpoint() { if (this.hasLink()) { if (this.link.getSource() == this) return this.link.getTarget(); else return this.link.getSource(); } else return null; } public String getDescription() { String text = name; if (this.address != null) text += " : " + address.getHostAddress() + "/" + addrPrefixLenght + " @ "; else text += " : null @ "; if (hasLink()) text += link.getName(); else text += "null"; return text; } public String toString() { return "IfCard " + name; } public long getNominalSpeed() { return this.nominalSpeed; } public void setNominalSpeed(long speed) { this.nominalSpeed = speed; logger.debug("NominalSpeed updated >> " + speed); } public long getPeakSpeed() { return peakSpeed; } public long setPeakSpeed() { return peakSpeed; } public void updatePeakSpeed(long peakSpeed) { if (peakSpeed > this.peakSpeed) { this.peakSpeed = peakSpeed; logger.debug("PeakSpeed updated >> " + peakSpeed); } } public IfCardAgent getAgent() throws AddressException { if (this.manager == null) this.manager = new IfCardAgent(this); return this.manager; } }