blob: 087110f1ec88f7bdbfd29136e28ad6d6baaec6d2 [file] [log] [blame]
package net.onrc.onos.core.topology;
import net.onrc.onos.core.topology.web.serializers.LinkSerializer;
import net.onrc.onos.core.util.LinkTuple;
import org.codehaus.jackson.map.annotate.JsonSerialize;
// TODO Everything returned by these interfaces must be either Unmodifiable view,
// immutable object, or a copy of the original "SB" In-memory Topology.
/**
* Interface of Link object in the topology.
*/
@JsonSerialize(using = LinkSerializer.class)
public interface Link extends ITopologyElement, StringAttributes {
/**
* Gets a {@link LinkTuple} that identifies this link.
*
* @return a LinkTuple representing the Port
*/
public LinkTuple getLinkTuple();
/**
* Gets the source switch for the link.
*
* @return the source switch for the link.
*/
public Switch getSrcSwitch();
/**
* Gets the source port for the link.
*
* @return the source port for the link.
*/
public Port getSrcPort();
/**
* Gets the destination switch for the link.
*
* @return the destination switch for the link.
*/
public Switch getDstSwitch();
/**
* Gets the destination port for the link.
*
* @return the destination port for the link.
*/
public Port getDstPort();
/**
* Gets the last seen time for the link.
* <p/>
* TODO: Not implemented yet.
* TODO: what is the time definition?
*
* @return the last seen time for the link.
*/
public long getLastSeenTime();
/**
* Gets the link capacity.
* <p/>
* TODO: What is the unit?
*
* @return the link capacity.
*/
public Double getCapacity();
/**
* Returns the link type of the link.
*
* @return {@link LinkType} for this link
*/
public LinkType getLinkType();
}