blob: ab41753f88c52c3413f63967dd20d0105b708267 [file] [log] [blame]
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07001/*
Brian O'Connora09fe5b2017-08-03 21:12:30 -07002 * Copyright 2014-present Open Networking Foundation
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07003 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
Ray Milkey7bf273c2017-09-27 16:15:15 -070016package org.onosproject.net.flow.oldbatch;
Madan Jampani117aaae2014-10-23 10:04:05 -070017
Brian O'Connorabafb502014-12-02 22:26:20 -080018import org.onosproject.event.AbstractEvent;
Brian O'Connor72cb19a2015-01-16 16:14:41 -080019import org.onosproject.net.DeviceId;
Ray Milkey7bf273c2017-09-27 16:15:15 -070020import org.onosproject.net.flow.CompletedBatchOperation;
Madan Jampani117aaae2014-10-23 10:04:05 -070021
Ray Milkeyc4dd7262015-08-21 09:33:42 -070022@Deprecated
Madan Jampani117aaae2014-10-23 10:04:05 -070023/**
24 * Describes flow rule batch event.
Ray Milkeyc4dd7262015-08-21 09:33:42 -070025 *
26 * @deprecated in Drake release - no longer a public API
Madan Jampani117aaae2014-10-23 10:04:05 -070027 */
28public final class FlowRuleBatchEvent extends AbstractEvent<FlowRuleBatchEvent.Type, FlowRuleBatchRequest> {
29
Brian O'Connor72cb19a2015-01-16 16:14:41 -080030
Madan Jampani117aaae2014-10-23 10:04:05 -070031 /**
32 * Type of flow rule events.
33 */
34 public enum Type {
35
Yuta HIGUCHI2fcb40c2014-11-03 14:39:10 -080036 // Request has been forwarded to MASTER Node
Madan Jampani117aaae2014-10-23 10:04:05 -070037 /**
38 * Signifies that a batch operation has been initiated.
39 */
40 BATCH_OPERATION_REQUESTED,
41
Yuta HIGUCHI2fcb40c2014-11-03 14:39:10 -080042 // MASTER Node has pushed the batch down to the Device
43 // (e.g., Received barrier reply)
Madan Jampani117aaae2014-10-23 10:04:05 -070044 /**
45 * Signifies that a batch operation has completed.
46 */
47 BATCH_OPERATION_COMPLETED,
48 }
49
50 private final CompletedBatchOperation result;
Brian O'Connor72cb19a2015-01-16 16:14:41 -080051 private final DeviceId deviceId;
Madan Jampani117aaae2014-10-23 10:04:05 -070052
53 /**
54 * Constructs a new FlowRuleBatchEvent.
Brian O'Connor72cb19a2015-01-16 16:14:41 -080055 *
56 * @param request batch operation request
57 * @param deviceId the device this batch will be processed on
Madan Jampani117aaae2014-10-23 10:04:05 -070058 * @return event.
59 */
Brian O'Connor72cb19a2015-01-16 16:14:41 -080060 public static FlowRuleBatchEvent requested(FlowRuleBatchRequest request, DeviceId deviceId) {
61 FlowRuleBatchEvent event = new FlowRuleBatchEvent(Type.BATCH_OPERATION_REQUESTED, request, deviceId);
Madan Jampani117aaae2014-10-23 10:04:05 -070062 return event;
63 }
64
65 /**
66 * Constructs a new FlowRuleBatchEvent.
67 * @param request batch operation request.
68 * @param result completed batch operation result.
69 * @return event.
70 */
Yuta HIGUCHI9def0472014-10-23 15:51:10 -070071 public static FlowRuleBatchEvent completed(FlowRuleBatchRequest request, CompletedBatchOperation result) {
Madan Jampani117aaae2014-10-23 10:04:05 -070072 FlowRuleBatchEvent event = new FlowRuleBatchEvent(Type.BATCH_OPERATION_COMPLETED, request, result);
73 return event;
74 }
75
76 /**
77 * Returns the result of this batch operation.
78 * @return batch operation result.
79 */
80 public CompletedBatchOperation result() {
81 return result;
82 }
83
84 /**
Brian O'Connor72cb19a2015-01-16 16:14:41 -080085 * Returns the deviceId for this batch.
86 * @return device id
87 */
88 public DeviceId deviceId() {
89 return deviceId;
90 }
91
92 /**
Madan Jampani117aaae2014-10-23 10:04:05 -070093 * Creates an event of a given type and for the specified flow rule batch.
94 *
95 * @param type flow rule batch event type
Brian O'Connor72cb19a2015-01-16 16:14:41 -080096 * @param request event flow rule batch subject
97 * @param result the result of the batch operation
Madan Jampani117aaae2014-10-23 10:04:05 -070098 */
99 private FlowRuleBatchEvent(Type type, FlowRuleBatchRequest request, CompletedBatchOperation result) {
100 super(type, request);
101 this.result = result;
Brian O'Connor72cb19a2015-01-16 16:14:41 -0800102 this.deviceId = result.deviceId();
103 }
104
105 /**
106 * Creates an event of a given type and for the specified flow rule batch.
107 *
108 * @param type flow rule batch event type
109 * @param request event flow rule batch subject
110 * @param deviceId the device id for this batch
111 */
112 private FlowRuleBatchEvent(Type type, FlowRuleBatchRequest request, DeviceId deviceId) {
113 super(type, request);
114 this.result = null;
115 this.deviceId = deviceId;
Madan Jampani117aaae2014-10-23 10:04:05 -0700116 }
117}