X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fadsal%2Fforwardingrulesmanager%2Fapi%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fforwardingrulesmanager%2FFlowEntry.java;fp=opendaylight%2Fadsal%2Fforwardingrulesmanager%2Fapi%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fforwardingrulesmanager%2FFlowEntry.java;h=0000000000000000000000000000000000000000;hp=d9a0891c2ad812b855641c48155235633328ff51;hb=50f88249a65c52ba56a48852b71ce432fed2bbeb;hpb=abfa9a03550cbe9fccc4420684dced175dd6d119 diff --git a/opendaylight/adsal/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/FlowEntry.java b/opendaylight/adsal/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/FlowEntry.java deleted file mode 100644 index d9a0891c2a..0000000000 --- a/opendaylight/adsal/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/FlowEntry.java +++ /dev/null @@ -1,192 +0,0 @@ -/* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ - -package org.opendaylight.controller.forwardingrulesmanager; - -import java.io.Serializable; -import java.util.Date; - -import org.opendaylight.controller.sal.core.ContainerFlow; -import org.opendaylight.controller.sal.core.Node; -import org.opendaylight.controller.sal.flowprogrammer.Flow; -import org.opendaylight.controller.sal.match.Match; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Represents a flow applications request Forwarding Rules Manager to install on - * a network node. A FlowEntry is constituted of a flow (match + actions), the - * target network node, and the flow name. It also includes a group name. For - * instance the flows constituting a policy all share the same group name. - */ -public class FlowEntry implements Cloneable, Serializable { - protected static final Logger logger = LoggerFactory.getLogger(FlowEntry.class); - private static final long serialVersionUID = 1L; - private static final Logger log = LoggerFactory.getLogger(FlowEntry.class); - private String groupName; // group name - private String flowName; // flow name (may be null) - private Node node; // network node where to install the flow - private Flow flow; // match + action - - public FlowEntry(String groupName, String flowName, Flow flow, Node node) { - this.groupName = groupName; - this.flow = flow; - this.node = node; - this.flowName = (flowName != null) ? flowName : constructFlowName(); - } - - public String getGroupName() { - return groupName; - } - - public void setGroupName(String name) { - this.groupName = name; - } - - /** - * Return the actual Flow contained in this entry - * - * @return the flow - */ - public Flow getFlow() { - return flow; - } - - public Node getNode() { - return node; - } - - public void setNode(Node n) { - this.node = n; - } - - public String getFlowName() { - return flowName; - } - - public void setFlowName(String n) { - this.flowName = n; - } - - @Override - public FlowEntry clone() { - FlowEntry cloned = null; - try { - cloned = (FlowEntry) super.clone(); - cloned.flow = this.flow.clone(); - } catch (CloneNotSupportedException e) { - log.warn("exception in clone", e); - } - return cloned; - } - - /* - * Only accounts fields which uniquely identify a flow for collision - * purposes: node, match and priority - */ - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((node == null) ? 0 : node.hashCode()); - result = prime * result + ((flow == null) ? 0 : (int) flow.getPriority()); - result = prime * result + ((flow == null || flow.getMatch() == null) ? 0 : flow.getMatch().hashCode()); - - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - FlowEntry other = (FlowEntry) obj; - - if (node == null) { - if (other.node != null) { - return false; - } - } else if (!node.equals(other.node)) { - return false; - } - - if (flow == null) { - return other.flow == null; - } else if (other.flow == null) { - return false; - } - if (flow.getPriority() != other.flow.getPriority()) { - return false; - } - if (flow.getMatch() == null) { - if (other.flow.getMatch() != null) { - return false; - } - } else if (!flow.getMatch().equals(other.flow.getMatch())) { - return false; - } - - return true; - } - - @Override - public String toString() { - return "FlowEntry[flowName = " + flowName + ", groupName = " + groupName + ", node = " + node + ", flow = " - + flow + "]"; - } - - private String constructFlowName() { - return this.groupName + "_" + new Date().toString(); - } - - public boolean equalsByNodeAndName(Node node, String flowName) { - return this.node.equals(node) && this.flowName.equals(flowName); - } - - /** - * Merges the current Flow with the passed Container Flow - * - * Note: Container Flow merging is not an injective function. Be m1 and m2 - * two different matches, and be f() the flow merge function, such that y1 = - * f(m1) and y2 = f(m2) are the two merged matches, we may have: y1 = y2 - * - * - * @param containerFlow - * @return this merged FlowEntry - */ - public FlowEntry mergeWith(ContainerFlow containerFlow) { - Match myMatch = flow.getMatch(); - - Match filter = containerFlow.getMatch(); - - // Merge - Match merge = myMatch.mergeWithFilter(filter); - - // Replace this Flow's match with merged version - flow.setMatch(merge); - - return this; - } - - /** - * Returns whether this entry is the result of an internal generated static - * flow - * - * @return true if internal generated static flow, false otherwise - */ - public boolean isInternal() { - return flowName.startsWith(FlowConfig.INTERNALSTATICFLOWBEGIN) - && flowName.endsWith(FlowConfig.INTERNALSTATICFLOWEND); - } -}