diff options
Diffstat (limited to 'framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair')
4 files changed, 122 insertions, 2 deletions
diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairEvent.java b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairEvent.java new file mode 100644 index 00000000..31ecc737 --- /dev/null +++ b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairEvent.java @@ -0,0 +1,63 @@ +/* + * 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.vtnrsc.portpair; + +import org.onosproject.event.AbstractEvent; +import org.onosproject.vtnrsc.PortPair; + +/** + * Describes network Port-Pair event. + */ +public class PortPairEvent extends AbstractEvent<PortPairEvent.Type, PortPair> { + /** + * Type of port-pair events. + */ + public enum Type { + /** + * Signifies that port-pair has been created. + */ + PORT_PAIR_PUT, + /** + * Signifies that port-pair has been deleted. + */ + PORT_PAIR_DELETE, + /** + * Signifies that port-pair has been updated. + */ + PORT_PAIR_UPDATE + } + + /** + * Creates an event of a given type and for the specified Port-Pair. + * + * @param type Port-Pair event type + * @param portPair Port-Pair subject + */ + public PortPairEvent(Type type, PortPair portPair) { + super(type, portPair); + } + + /** + * Creates an event of a given type and for the specified Port-Pair. + * + * @param type Port-Pair event type + * @param portPair Port-Pair subject + * @param time occurrence time + */ + public PortPairEvent(Type type, PortPair portPair, long time) { + super(type, portPair, time); + } +} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairListener.java b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairListener.java new file mode 100644 index 00000000..3bdb9e4e --- /dev/null +++ b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairListener.java @@ -0,0 +1,25 @@ +/* + * 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.vtnrsc.portpair; + +import org.onosproject.event.EventListener; + +/** + * Entity capable of Port-Pair related events. + */ +public interface PortPairListener extends EventListener<PortPairEvent> { + +} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairService.java b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairService.java index f99cc2cf..e98a6a20 100644 --- a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairService.java +++ b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairService.java @@ -77,4 +77,18 @@ public interface PortPairService { * @return true if the give port pair is deleted successfully. */ boolean removePortPair(PortPairId portPairId); + + /** + * Adds the specified listener to Port-Pair manager. + * + * @param listener Port-Pair listener + */ + void addListener(PortPairListener listener); + + /** + * Removes the specified listener to Port-Pair manager. + * + * @param listener Port-Pair listener + */ + void removeListener(PortPairListener listener); } diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/impl/PortPairManager.java b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/impl/PortPairManager.java index 93c8782a..ad6fd4bb 100644 --- a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/impl/PortPairManager.java +++ b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/impl/PortPairManager.java @@ -19,6 +19,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import static org.slf4j.LoggerFactory.getLogger; import java.util.Collections; +import java.util.Set; import org.apache.felix.scr.annotations.Activate; import org.apache.felix.scr.annotations.Component; @@ -34,9 +35,12 @@ import org.onosproject.store.service.StorageService; import org.onosproject.store.service.WallClockTimestamp; import org.onosproject.vtnrsc.PortPair; import org.onosproject.vtnrsc.PortPairId; +import org.onosproject.vtnrsc.portpair.PortPairListener; import org.onosproject.vtnrsc.portpair.PortPairService; import org.slf4j.Logger; +import com.google.common.collect.Sets; + /** * Provides implementation of the portPairService. */ @@ -44,11 +48,12 @@ import org.slf4j.Logger; @Service public class PortPairManager implements PortPairService { - private final Logger log = getLogger(getClass()); - private static final String PORT_PAIR_ID_NULL = "PortPair ID cannot be null"; private static final String PORT_PAIR_NULL = "PortPair cannot be null"; + private static final String LISTENER_NOT_NULL = "Listener cannot be null"; + private final Logger log = getLogger(getClass()); + private final Set<PortPairListener> listeners = Sets.newCopyOnWriteArraySet(); private EventuallyConsistentMap<PortPairId, PortPair> portPairStore; @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) @@ -73,6 +78,7 @@ public class PortPairManager implements PortPairService { @Deactivate public void deactivate() { portPairStore.destroy(); + listeners.clear(); log.info("Stopped"); } @@ -143,4 +149,16 @@ public class PortPairManager implements PortPairService { } return true; } + + @Override + public void addListener(PortPairListener listener) { + checkNotNull(listener, LISTENER_NOT_NULL); + listeners.add(listener); + } + + @Override + public void removeListener(PortPairListener listener) { + checkNotNull(listener, LISTENER_NOT_NULL); + listeners.remove(listener); + } } |