blob: 906e5057a9a9e04d2a1acd6be2faab3f218dd8f4 [file] [log] [blame]
tom8bb16062014-09-12 14:47:46 -07001package org.onlab.onos.net.flow;
2
3import java.util.List;
4
alshabib7410fea2014-09-16 13:48:39 -07005import org.onlab.onos.net.flow.criteria.Criterion;
6
tom8bb16062014-09-12 14:47:46 -07007/**
8 * Abstraction of a slice of network traffic.
9 */
10public interface TrafficSelector {
11
12 /**
13 * Returns selection criteria as an ordered list.
14 *
15 * @return list of criteria
16 */
17 List<Criterion> criteria();
18
19 /**
20 * Builder of traffic selector entities.
21 */
22 public interface Builder {
23
24 /**
25 * Adds a traffic selection criterion. If a same type criterion has
26 * already been added, it will be replaced by this one.
27 *
28 * @param criterion new criterion
alshabib369d2942014-09-12 17:59:35 -070029 * @return self
tom8bb16062014-09-12 14:47:46 -070030 */
alshabib369d2942014-09-12 17:59:35 -070031 Builder add(Criterion criterion);
tom8bb16062014-09-12 14:47:46 -070032
33 /**
34 * Builds an immutable traffic selector.
35 *
36 * @return traffic selector
37 */
38 TrafficSelector build();
39 }
40
41}