package net.onrc.onos.core.topology;

import java.util.Collection;

/**
 * Interface of Switch Object exposed to the "NB" read-only Topology.
 * <p/>
 * Everything returned by these interfaces must be either Unmodifiable view,
 * immutable object, or a copy of the original "SB" In-memory Topology.
 */
public interface Switch {
    public Long getDpid();

    public Collection<Port> getPorts();

    public Port getPort(Long number);


    // Graph traversal API
    // XXX What is the Definition of neighbor? Link exist in both direction or one-way is sufficient to be a neighbor, etc.
    public Iterable<Switch> getNeighbors();

    public Iterable<Link> getOutgoingLinks();

    public Iterable<Link> getIncomingLinks();

    public Link getLinkToNeighbor(Long dpid);

    // XXX Iterable or Collection?
    public Collection<Device> getDevices();
}
