blob: ca7cd25546538caed36f4db0b359a6fe3d061410 [file] [log] [blame]
package net.onrc.onos.ofcontroller.networkgraph;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
/**
* Port Object stored in In-memory Topology.
*
* TODO REMOVE following design memo: This object itself may hold the DBObject,
* but this Object itself will not issue any read/write to the DataStore.
*/
public class PortImpl extends NetworkGraphObject implements Port {
private Switch sw;
private Long number;
private String description;
protected Link outgoingLink;
protected Link incomingLink;
// These needs to be ConcurrentCollecton if allowing Graph to be accessed Concurrently
protected Set<Device> devices;
public PortImpl(NetworkGraph graph, Switch parentSwitch, Long number) {
super(graph);
this.sw = parentSwitch;
this.number = number;
this.devices = new HashSet<>();
}
@Override
public Long getDpid() {
return sw.getDpid();
}
@Override
public Long getNumber() {
return number;
}
@Override
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@Override
public Long getHardwareAddress() {
// TODO Auto-generated method stub
return 0L;
}
@Override
public Switch getSwitch() {
return sw;
}
@Override
public Link getOutgoingLink() {
return outgoingLink;
}
@Override
public Link getIncomingLink() {
return incomingLink;
}
@Override
public Iterable<Device> getDevices() {
return Collections.unmodifiableSet(this.devices);
}
public void setOutgoingLink(Link link) {
outgoingLink = link;
}
public void setIncomingLink(Link link) {
incomingLink = link;
}
/**
*
* @param d
* @return true if successfully added
*/
public boolean addDevice(Device d) {
return this.devices.add(d);
}
/**
*
* @param d
* @return true if device existed and was removed
*/
public boolean removeDevice(Device d) {
return this.devices.remove(d);
}
public void removeAllDevice() {
this.devices.clear();
}
@Override
public String toString() {
return String.format("%d:%d",
getSwitch().getDpid(),
getNumber());
}
}