Mahesh Poojary Huawei

[ONOS-3117] store listener in Flow-Classifier Manager

Change-Id: I40fd21050d9728d432b037528435ee8e7ec31ea2
...@@ -79,4 +79,18 @@ public interface FlowClassifierService { ...@@ -79,4 +79,18 @@ public interface FlowClassifierService {
79 * false 79 * false
80 */ 80 */
81 boolean removeFlowClassifier(FlowClassifierId id); 81 boolean removeFlowClassifier(FlowClassifierId id);
82 +
83 + /**
84 + * Adds the specified listener to Flow-Classifier manager.
85 + *
86 + * @param listener Flow-Classifier listener
87 + */
88 + void addListener(FlowClassifierListener listener);
89 +
90 + /**
91 + * Removes the specified listener to Flow-Classifier manager.
92 + *
93 + * @param listener Flow-Classifier listener
94 + */
95 + void removeListener(FlowClassifierListener listener);
82 } 96 }
......
...@@ -15,6 +15,9 @@ ...@@ -15,6 +15,9 @@
15 */ 15 */
16 package org.onosproject.vtnrsc.flowclassifier.impl; 16 package org.onosproject.vtnrsc.flowclassifier.impl;
17 17
18 +import static org.slf4j.LoggerFactory.getLogger;
19 +import static com.google.common.base.Preconditions.checkNotNull;
20 +
18 import org.apache.felix.scr.annotations.Activate; 21 import org.apache.felix.scr.annotations.Activate;
19 import org.apache.felix.scr.annotations.Component; 22 import org.apache.felix.scr.annotations.Component;
20 import org.apache.felix.scr.annotations.Deactivate; 23 import org.apache.felix.scr.annotations.Deactivate;
...@@ -29,13 +32,14 @@ import org.onosproject.store.service.StorageService; ...@@ -29,13 +32,14 @@ import org.onosproject.store.service.StorageService;
29 import org.onosproject.store.service.WallClockTimestamp; 32 import org.onosproject.store.service.WallClockTimestamp;
30 import org.onosproject.vtnrsc.FlowClassifierId; 33 import org.onosproject.vtnrsc.FlowClassifierId;
31 import org.onosproject.vtnrsc.FlowClassifier; 34 import org.onosproject.vtnrsc.FlowClassifier;
35 +import org.onosproject.vtnrsc.flowclassifier.FlowClassifierListener;
32 import org.onosproject.vtnrsc.flowclassifier.FlowClassifierService; 36 import org.onosproject.vtnrsc.flowclassifier.FlowClassifierService;
33 import org.slf4j.Logger; 37 import org.slf4j.Logger;
34 38
35 -import static org.slf4j.LoggerFactory.getLogger; 39 +import java.util.Set;
36 -import static com.google.common.base.Preconditions.checkNotNull;
37 40
38 import com.google.common.collect.ImmutableList; 41 import com.google.common.collect.ImmutableList;
42 +import com.google.common.collect.Sets;
39 43
40 /** 44 /**
41 * Provides implementation of the Flow Classifier Service. 45 * Provides implementation of the Flow Classifier Service.
...@@ -44,12 +48,14 @@ import com.google.common.collect.ImmutableList; ...@@ -44,12 +48,14 @@ import com.google.common.collect.ImmutableList;
44 @Service 48 @Service
45 public class FlowClassifierManager implements FlowClassifierService { 49 public class FlowClassifierManager implements FlowClassifierService {
46 50
47 - private final Logger log = getLogger(FlowClassifierManager.class);
48 -
49 private static final String FLOW_CLASSIFIER_NOT_NULL = "Flow Classifier cannot be null"; 51 private static final String FLOW_CLASSIFIER_NOT_NULL = "Flow Classifier cannot be null";
50 private static final String FLOW_CLASSIFIER_ID_NOT_NULL = "Flow Classifier Id cannot be null"; 52 private static final String FLOW_CLASSIFIER_ID_NOT_NULL = "Flow Classifier Id cannot be null";
53 + private static final String LISTENER_NOT_NULL = "Listener cannot be null";
51 54
55 + private final Logger log = getLogger(FlowClassifierManager.class);
56 + private final Set<FlowClassifierListener> listeners = Sets.newCopyOnWriteArraySet();
52 private EventuallyConsistentMap<FlowClassifierId, FlowClassifier> flowClassifierStore; 57 private EventuallyConsistentMap<FlowClassifierId, FlowClassifier> flowClassifierStore;
58 +
53 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) 59 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
54 protected StorageService storageService; 60 protected StorageService storageService;
55 61
...@@ -69,6 +75,7 @@ public class FlowClassifierManager implements FlowClassifierService { ...@@ -69,6 +75,7 @@ public class FlowClassifierManager implements FlowClassifierService {
69 @Deactivate 75 @Deactivate
70 protected void deactivate() { 76 protected void deactivate() {
71 flowClassifierStore.destroy(); 77 flowClassifierStore.destroy();
78 + listeners.clear();
72 log.info("Flow Classifier service deactivated"); 79 log.info("Flow Classifier service deactivated");
73 } 80 }
74 81
...@@ -138,4 +145,16 @@ public class FlowClassifierManager implements FlowClassifierService { ...@@ -138,4 +145,16 @@ public class FlowClassifierManager implements FlowClassifierService {
138 } 145 }
139 return true; 146 return true;
140 } 147 }
148 +
149 + @Override
150 + public void addListener(FlowClassifierListener listener) {
151 + checkNotNull(listener, LISTENER_NOT_NULL);
152 + listeners.add(listener);
153 + }
154 +
155 + @Override
156 + public void removeListener(FlowClassifierListener listener) {
157 + checkNotNull(listener, LISTENER_NOT_NULL);
158 + listeners.remove(listener);
159 + }
141 } 160 }
......