blob: 58c5b38359b5fa7c0418385929cad95d4454864a [file] [log] [blame]
package net.onrc.onos.api.flowmanager;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import net.onrc.onos.core.matchaction.MatchActionPlan;
import net.onrc.onos.core.matchaction.action.OutputAction;
import net.onrc.onos.core.matchaction.match.PacketMatch;
import net.onrc.onos.core.util.SwitchPort;
/**
* An IFlow object expressing the multipoints-to-point tree flow for the packet
* layer.
* <p>
* NOTE: This class might generate the MatchActionPlan which includes the MAC
* address modifications or other the label-switching-like schemes.
*/
public class SingleDstTreeFlow implements Flow {
protected final FlowId id;
protected PacketMatch match;
protected Set<SwitchPort> ingressPorts;
protected Tree tree;
protected OutputAction outputAction;
/**
* Creates new instance using Tree object.
*
* @param id ID for this object.
* @param match Traffic filter for the tree.
* @param ingressPorts A set of ingress ports of the tree.
* @param tree Tree object specifying tree topology for this object.
* @param outputAction OutputAction object at the egress edge switch.
*/
public SingleDstTreeFlow(String id, PacketMatch match,
Collection<SwitchPort> ingressPorts, Tree tree, OutputAction outputAction) {
this.id = new FlowId(id);
this.match = match;
this.ingressPorts = new HashSet<SwitchPort>(ingressPorts);
this.tree = tree;
this.outputAction = outputAction;
// TODO: check if the tree is a MP2P tree.
// TODO: check consistency among inPorts, tree, and action.
}
@Override
public FlowId getId() {
return id;
}
@Override
public PacketMatch getMatch() {
return match;
}
@Override
public MatchActionPlan compile() {
// TODO Auto-generated method stub
return null;
}
/**
* Gets the ingress ports of the tree.
*
* @return The ingress ports of the tree.
*/
public Collection<SwitchPort> getIngressPorts() {
return Collections.unmodifiableCollection(ingressPorts);
}
/**
* Gets the tree.
*
* @return The tree object.
*/
public Tree getTree() {
return tree;
}
/**
* Gets the output action for the tree.
*
* @return The OutputAction object.
*/
public OutputAction getOutputAction() {
return outputAction;
}
}