mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-10-23 21:31:00 +02:00
Define a Criterion for IndexedLambda
Resolve ONOS-1845 Change-Id: Ic6f0ea2572e83c10444d7452debfd302149dc994
This commit is contained in:
parent
3d1b0653f3
commit
efc2e28c84
@ -15,6 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.onosproject.net.flow.criteria;
|
package org.onosproject.net.flow.criteria;
|
||||||
|
|
||||||
|
import org.onosproject.net.IndexedLambda;
|
||||||
import org.onosproject.net.Lambda;
|
import org.onosproject.net.Lambda;
|
||||||
import org.onosproject.net.OchSignal;
|
import org.onosproject.net.OchSignal;
|
||||||
import org.onosproject.net.PortNumber;
|
import org.onosproject.net.PortNumber;
|
||||||
@ -359,6 +360,7 @@ public final class Criteria {
|
|||||||
* @param lambda lambda to match on (16 bits unsigned integer)
|
* @param lambda lambda to match on (16 bits unsigned integer)
|
||||||
* @return match criterion
|
* @return match criterion
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public static Criterion matchLambda(int lambda) {
|
public static Criterion matchLambda(int lambda) {
|
||||||
return new LambdaCriterion(lambda, Type.OCH_SIGID);
|
return new LambdaCriterion(lambda, Type.OCH_SIGID);
|
||||||
}
|
}
|
||||||
@ -370,7 +372,9 @@ public final class Criteria {
|
|||||||
* @return match criterion
|
* @return match criterion
|
||||||
*/
|
*/
|
||||||
public static Criterion matchLambda(Lambda lambda) {
|
public static Criterion matchLambda(Lambda lambda) {
|
||||||
if (lambda instanceof OchSignal) {
|
if (lambda instanceof IndexedLambda) {
|
||||||
|
return new IndexedLambdaCriterion((IndexedLambda) lambda);
|
||||||
|
} else if (lambda instanceof OchSignal) {
|
||||||
return new OchSignalCriterion((OchSignal) lambda);
|
return new OchSignalCriterion((OchSignal) lambda);
|
||||||
} else {
|
} else {
|
||||||
throw new UnsupportedOperationException(String.format("Unsupported type of Lambda: %s", lambda));
|
throw new UnsupportedOperationException(String.format("Unsupported type of Lambda: %s", lambda));
|
||||||
|
@ -0,0 +1,80 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2015 Open Networking Laboratory
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.onosproject.net.flow.criteria;
|
||||||
|
|
||||||
|
import com.google.common.base.MoreObjects;
|
||||||
|
import org.onosproject.net.IndexedLambda;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import static com.google.common.base.Preconditions.checkNotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implementation of indexed lambda criterion.
|
||||||
|
*/
|
||||||
|
public class IndexedLambdaCriterion implements Criterion {
|
||||||
|
|
||||||
|
private final IndexedLambda lambda;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a criterion with the specified value.
|
||||||
|
*
|
||||||
|
* @param lambda lambda index number
|
||||||
|
*/
|
||||||
|
IndexedLambdaCriterion(IndexedLambda lambda) {
|
||||||
|
this.lambda = checkNotNull(lambda);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Type type() {
|
||||||
|
// TODO: consider defining a new specific type
|
||||||
|
// Now OCH_SIGID is used due to compatibility concerns
|
||||||
|
return Type.OCH_SIGID;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the indexed lambda to match.
|
||||||
|
*
|
||||||
|
* @return the indexed lambda to match
|
||||||
|
*/
|
||||||
|
public IndexedLambda lambda() {
|
||||||
|
return lambda;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hash(lambda);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (this == obj) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (!(obj instanceof IndexedLambdaCriterion)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
final IndexedLambdaCriterion that = (IndexedLambdaCriterion) obj;
|
||||||
|
return Objects.equals(this.lambda, that.lambda);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return MoreObjects.toStringHelper(this)
|
||||||
|
.add("lambda", lambda)
|
||||||
|
.toString();
|
||||||
|
}
|
||||||
|
}
|
@ -220,6 +220,10 @@ public class CriteriaTest {
|
|||||||
Criterion sameAsMatchLambda1 = Criteria.matchLambda(lambda1);
|
Criterion sameAsMatchLambda1 = Criteria.matchLambda(lambda1);
|
||||||
Criterion matchLambda2 = Criteria.matchLambda(lambda2);
|
Criterion matchLambda2 = Criteria.matchLambda(lambda2);
|
||||||
|
|
||||||
|
Criterion matchIndexedLambda1 = Criteria.matchLambda(Lambda.indexedLambda(1));
|
||||||
|
Criterion sameAsMatchIndexedLambda1 = Criteria.matchLambda(Lambda.indexedLambda(1));
|
||||||
|
Criterion matchIndexedLambda2 = Criteria.matchLambda(Lambda.indexedLambda(2));
|
||||||
|
|
||||||
short signalLambda1 = 1;
|
short signalLambda1 = 1;
|
||||||
short signalLambda2 = 2;
|
short signalLambda2 = 2;
|
||||||
Criterion matchSignalLambda1 = Criteria.matchOpticalSignalType(signalLambda1);
|
Criterion matchSignalLambda1 = Criteria.matchOpticalSignalType(signalLambda1);
|
||||||
@ -1037,6 +1041,14 @@ public class CriteriaTest {
|
|||||||
.testEquals();
|
.testEquals();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testIndexedLambdaCriterionEquals() {
|
||||||
|
new EqualsTester()
|
||||||
|
.addEqualityGroup(matchIndexedLambda1, sameAsMatchIndexedLambda1)
|
||||||
|
.addEqualityGroup(matchIndexedLambda2)
|
||||||
|
.testEquals();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOchSignalCriterionEquals() {
|
public void testOchSignalCriterionEquals() {
|
||||||
new EqualsTester()
|
new EqualsTester()
|
||||||
|
@ -97,6 +97,7 @@ import org.onosproject.net.flow.criteria.IcmpCodeCriterion;
|
|||||||
import org.onosproject.net.flow.criteria.IcmpTypeCriterion;
|
import org.onosproject.net.flow.criteria.IcmpTypeCriterion;
|
||||||
import org.onosproject.net.flow.criteria.Icmpv6CodeCriterion;
|
import org.onosproject.net.flow.criteria.Icmpv6CodeCriterion;
|
||||||
import org.onosproject.net.flow.criteria.Icmpv6TypeCriterion;
|
import org.onosproject.net.flow.criteria.Icmpv6TypeCriterion;
|
||||||
|
import org.onosproject.net.flow.criteria.IndexedLambdaCriterion;
|
||||||
import org.onosproject.net.flow.criteria.LambdaCriterion;
|
import org.onosproject.net.flow.criteria.LambdaCriterion;
|
||||||
import org.onosproject.net.flow.criteria.MetadataCriterion;
|
import org.onosproject.net.flow.criteria.MetadataCriterion;
|
||||||
import org.onosproject.net.flow.criteria.MplsCriterion;
|
import org.onosproject.net.flow.criteria.MplsCriterion;
|
||||||
@ -291,6 +292,7 @@ public final class KryoNamespaces {
|
|||||||
MplsCriterion.class,
|
MplsCriterion.class,
|
||||||
IPv6ExthdrFlagsCriterion.class,
|
IPv6ExthdrFlagsCriterion.class,
|
||||||
LambdaCriterion.class,
|
LambdaCriterion.class,
|
||||||
|
IndexedLambdaCriterion.class,
|
||||||
OchSignalCriterion.class,
|
OchSignalCriterion.class,
|
||||||
OpticalSignalTypeCriterion.class,
|
OpticalSignalTypeCriterion.class,
|
||||||
Criterion.class,
|
Criterion.class,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user