From 76dc892491948adae5e5e62cf94448967e8d865b Mon Sep 17 00:00:00 2001 From: Ashlee Young Date: Sun, 6 Dec 2015 07:15:03 -0800 Subject: Fixes bad POM file with ONOS commit 8c68536972f63069c263635c9d9f4f31d7f3e9a2 Change-Id: I7adb5a2d3738d53dbc41db7577768b0e7ced5450 Signed-off-by: Ashlee Young --- .../net/topology/HopCountLinkWeight.java | 36 ++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/HopCountLinkWeight.java (limited to 'framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/HopCountLinkWeight.java') diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/HopCountLinkWeight.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/HopCountLinkWeight.java new file mode 100644 index 00000000..c557016b --- /dev/null +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/HopCountLinkWeight.java @@ -0,0 +1,36 @@ +package org.onosproject.net.topology; + +import static org.onosproject.net.Link.State.ACTIVE; +import static org.onosproject.net.Link.Type.INDIRECT; + +/** + * Link weight for measuring link cost as hop count with indirect links + * being as expensive as traversing the entire graph to assume the worst. + */ +public class HopCountLinkWeight implements LinkWeight { + private final int indirectLinkCost; + + /** + * Creates a new hop-count weight. + */ + public HopCountLinkWeight() { + this.indirectLinkCost = Short.MAX_VALUE; + } + + /** + * Creates a new hop-count weight with the specified cost of indirect links. + */ + public HopCountLinkWeight(int indirectLinkCost) { + this.indirectLinkCost = indirectLinkCost; + } + + @Override + public double weight(TopologyEdge edge) { + // To force preference to use direct paths first, make indirect + // links as expensive as the linear vertex traversal. + return edge.link().state() == + ACTIVE ? (edge.link().type() == + INDIRECT ? indirectLinkCost : 1) : -1; + } +} + -- cgit 1.2.3-korg