summaryrefslogtreecommitdiffstats
path: root/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleOperations.java
diff options
context:
space:
mode:
authorCNlucius <lukai1@huawei.com>2016-09-13 11:40:12 +0800
committerCNlucius <lukai1@huawei.com>2016-09-13 11:41:53 +0800
commitb731e2f1dd0972409b136aebc7b463dd72c9cfad (patch)
tree5107d7d80c19ad8076c2c97c2b5ef8d1cf3ab903 /framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleOperations.java
parentee93993458266114c29271a481ef9ce7ce621b2a (diff)
ONOSFW-171
O/S-SFC-ONOS scenario documentation Change-Id: I51ae1cf736ea24ab6680f8edca1b2bf5dd598365 Signed-off-by: CNlucius <lukai1@huawei.com>
Diffstat (limited to 'framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleOperations.java')
-rw-r--r--framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleOperations.java181
1 files changed, 0 insertions, 181 deletions
diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleOperations.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleOperations.java
deleted file mode 100644
index 84e0b8be..00000000
--- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleOperations.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * 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;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Lists;
-
-import java.util.List;
-import java.util.Set;
-
-import static org.onosproject.net.flow.FlowRuleOperation.Type.*;
-
-/**
- * A batch of flow rule operations that are broken into stages.
- * TODO move this up to parent's package
- */
-public class FlowRuleOperations {
-
- private final List<Set<FlowRuleOperation>> stages;
- private final FlowRuleOperationsContext callback; // TODO consider Optional
-
- private FlowRuleOperations(List<Set<FlowRuleOperation>> stages,
- FlowRuleOperationsContext cb) {
- this.stages = stages;
- this.callback = cb;
- }
-
- // kryo-constructor
- protected FlowRuleOperations() {
- this.stages = Lists.newArrayList();
- this.callback = null;
- }
-
- /**
- * Returns the flow rule operations as sets of stages that should be
- * executed sequentially.
- *
- * @return flow rule stages
- */
- public List<Set<FlowRuleOperation>> stages() {
- return stages;
- }
-
- /**
- * Returns the callback for this batch of operations.
- *
- * @return callback
- */
- public FlowRuleOperationsContext callback() {
- return callback;
- }
-
- /**
- * Returns a new builder.
- *
- * @return new builder
- */
- public static Builder builder() {
- return new Builder();
- }
-
- @Override
- public String toString() {
- return MoreObjects.toStringHelper(this)
- .add("stages", stages)
- .toString();
- }
-
- /**
- * A builder for constructing flow rule operations.
- */
- public static final class Builder {
-
- private final ImmutableList.Builder<Set<FlowRuleOperation>> listBuilder = ImmutableList.builder();
- private ImmutableSet.Builder<FlowRuleOperation> currentStage = ImmutableSet.builder();
-
- // prevent use of the default constructor outside of this file; use the above method
- private Builder() {}
-
- /**
- * Appends a flow rule add to the current stage.
- *
- * @param flowRule flow rule
- * @return this
- */
- public Builder add(FlowRule flowRule) {
- currentStage.add(new FlowRuleOperation(flowRule, ADD));
- return this;
- }
-
- /**
- * Appends an existing flow rule to the current stage.
- *
- * @param flowRuleOperation flow rule operation
- * @return this
- */
- public Builder operation(FlowRuleOperation flowRuleOperation) {
- currentStage.add(flowRuleOperation);
- return this;
- }
-
- /**
- * Appends a flow rule modify to the current stage.
- *
- * @param flowRule flow rule
- * @return this
- */
- public Builder modify(FlowRule flowRule) {
- currentStage.add(new FlowRuleOperation(flowRule, MODIFY));
- return this;
- }
-
- /**
- * Appends a flow rule remove to the current stage.
- *
- * @param flowRule flow rule
- * @return this
- */
- // FIXME this is confusing, consider renaming
- public Builder remove(FlowRule flowRule) {
- currentStage.add(new FlowRuleOperation(flowRule, REMOVE));
- return this;
- }
-
- /**
- * Closes the current stage.
- */
- private void closeStage() {
- ImmutableSet<FlowRuleOperation> stage = currentStage.build();
- if (!stage.isEmpty()) {
- listBuilder.add(stage);
- }
- }
-
- /**
- * Closes the current stage and starts a new one.
- *
- * @return this
- */
- public Builder newStage() {
- closeStage();
- currentStage = ImmutableSet.builder();
- return this;
- }
-
- /**
- * Builds the immutable flow rule operations.
- *
- * @return flow rule operations
- */
- public FlowRuleOperations build() {
- return build(null);
- }
-
- /**
- * Builds the immutable flow rule operations.
- *
- * @param cb the callback to call when this operation completes
- * @return flow rule operations
- */
- public FlowRuleOperations build(FlowRuleOperationsContext cb) {
- closeStage();
- return new FlowRuleOperations(listBuilder.build(), cb);
- }
- }
-}