diff options
Diffstat (limited to 'framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup')
4 files changed, 122 insertions, 2 deletions
diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupEvent.java b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupEvent.java new file mode 100644 index 00000000..88e1d7fb --- /dev/null +++ b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupEvent.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.portpairgroup; + +import org.onosproject.event.AbstractEvent; +import org.onosproject.vtnrsc.PortPairGroup; + +/** + * Describes network Port-Pair-Group event. + */ +public class PortPairGroupEvent extends AbstractEvent<PortPairGroupEvent.Type, PortPairGroup> { + /** + * Type of port-pair-group events. + */ + public enum Type { + /** + * Signifies that port-pair-group has been created. + */ + PORT_PAIR_GROUP_PUT, + /** + * Signifies that port-pair-group has been deleted. + */ + PORT_PAIR_GROUP_DELETE, + /** + * Signifies that port-pair-group has been updated. + */ + PORT_PAIR_GROUP_UPDATE + } + + /** + * Creates an event of a given type and for the specified Port-Pair-Group. + * + * @param type Port-Pair-Group event type + * @param portPairGroup Port-Pair-Group subject + */ + public PortPairGroupEvent(Type type, PortPairGroup portPairGroup) { + super(type, portPairGroup); + } + + /** + * Creates an event of a given type and for the specified Port-Pair-Group. + * + * @param type Port-Pair-Group event type + * @param portPairGroup Port-Pair-Group subject + * @param time occurrence time + */ + public PortPairGroupEvent(Type type, PortPairGroup portPairGroup, long time) { + super(type, portPairGroup, time); + } +} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupListener.java b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupListener.java new file mode 100644 index 00000000..637149e3 --- /dev/null +++ b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupListener.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.portpairgroup; + +import org.onosproject.event.EventListener; + +/** + * Entity capable of Port-Pair-Group related events. + */ +public interface PortPairGroupListener extends EventListener<PortPairGroupEvent> { + +} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupService.java b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupService.java index 77f483fc..efee0eb9 100644 --- a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupService.java +++ b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupService.java @@ -77,4 +77,18 @@ public interface PortPairGroupService { * @return true if the give port pair group is deleted successfully. */ boolean removePortPairGroup(PortPairGroupId portPairGroupId); + + /** + * Adds the specified listener to Port-Pair-Group manager. + * + * @param listener Port-Pair-Group listener + */ + void addListener(PortPairGroupListener listener); + + /** + * Removes the specified listener to Port-Pair-Group manager. + * + * @param listener Port-Pair-Group listener + */ + void removeListener(PortPairGroupListener listener); } diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/impl/PortPairGroupManager.java b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/impl/PortPairGroupManager.java index 55fb4e43..5f80ef64 100644 --- a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/impl/PortPairGroupManager.java +++ b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/impl/PortPairGroupManager.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.PortPairGroup; import org.onosproject.vtnrsc.PortPairGroupId; +import org.onosproject.vtnrsc.portpairgroup.PortPairGroupListener; import org.onosproject.vtnrsc.portpairgroup.PortPairGroupService; import org.slf4j.Logger; +import com.google.common.collect.Sets; + /** * Provides implementation of the portPairGroupService. */ @@ -44,11 +48,12 @@ import org.slf4j.Logger; @Service public class PortPairGroupManager implements PortPairGroupService { - private final Logger log = getLogger(getClass()); - private static final String PORT_PAIR_GROUP_ID_NULL = "PortPairGroup ID cannot be null"; private static final String PORT_PAIR_GROUP_NULL = "PortPairGroup cannot be null"; + private static final String LISTENER_NOT_NULL = "Listener cannot be null"; + private final Logger log = getLogger(getClass()); + private final Set<PortPairGroupListener> listeners = Sets.newCopyOnWriteArraySet(); private EventuallyConsistentMap<PortPairGroupId, PortPairGroup> portPairGroupStore; @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) @@ -73,6 +78,7 @@ public class PortPairGroupManager implements PortPairGroupService { @Deactivate public void deactivate() { portPairGroupStore.destroy(); + listeners.clear(); log.info("Stopped"); } @@ -143,4 +149,16 @@ public class PortPairGroupManager implements PortPairGroupService { } return true; } + + @Override + public void addListener(PortPairGroupListener listener) { + checkNotNull(listener, LISTENER_NOT_NULL); + listeners.add(listener); + } + + @Override + public void removeListener(PortPairGroupListener listener) { + checkNotNull(listener, LISTENER_NOT_NULL); + listeners.remove(listener); + } } |