Madan Jampani

GossipDeviceStore: Notifying applications of latest topology events received from peers

1 package org.onlab.onos.store; 1 package org.onlab.onos.store;
2 2
3 +import java.util.List;
4 +
3 import org.onlab.onos.event.Event; 5 import org.onlab.onos.event.Event;
4 6
5 import static com.google.common.base.Preconditions.checkState; 7 import static com.google.common.base.Preconditions.checkState;
...@@ -41,4 +43,15 @@ public class AbstractStore<E extends Event, D extends StoreDelegate<E>> ...@@ -41,4 +43,15 @@ public class AbstractStore<E extends Event, D extends StoreDelegate<E>>
41 delegate.notify(event); 43 delegate.notify(event);
42 } 44 }
43 } 45 }
46 +
47 + /**
48 + * Notifies the delegate with the specified list of events.
49 + *
50 + * @param events list of events to delegate
51 + */
52 + protected void notifyDelegate(List<E> events) {
53 + for (E event: events) {
54 + notifyDelegate(event);
55 + }
56 + }
44 } 57 }
......
...@@ -870,6 +870,12 @@ public class GossipDeviceStore ...@@ -870,6 +870,12 @@ public class GossipDeviceStore
870 clusterCommunicator.broadcast(message); 870 clusterCommunicator.broadcast(message);
871 } 871 }
872 872
873 + private void notifyDelegateIfNotNull(DeviceEvent event) {
874 + if (event != null) {
875 + notifyDelegate(event);
876 + }
877 + }
878 +
873 private class InternalDeviceEventListener implements ClusterMessageHandler { 879 private class InternalDeviceEventListener implements ClusterMessageHandler {
874 @Override 880 @Override
875 public void handle(ClusterMessage message) { 881 public void handle(ClusterMessage message) {
...@@ -881,7 +887,7 @@ public class GossipDeviceStore ...@@ -881,7 +887,7 @@ public class GossipDeviceStore
881 DeviceId deviceId = event.deviceId(); 887 DeviceId deviceId = event.deviceId();
882 Timestamped<DeviceDescription> deviceDescription = event.deviceDescription(); 888 Timestamped<DeviceDescription> deviceDescription = event.deviceDescription();
883 889
884 - createOrUpdateDeviceInternal(providerId, deviceId, deviceDescription); 890 + notifyDelegateIfNotNull(createOrUpdateDeviceInternal(providerId, deviceId, deviceDescription));
885 } 891 }
886 } 892 }
887 893
...@@ -895,7 +901,7 @@ public class GossipDeviceStore ...@@ -895,7 +901,7 @@ public class GossipDeviceStore
895 DeviceId deviceId = event.deviceId(); 901 DeviceId deviceId = event.deviceId();
896 Timestamp timestamp = event.timestamp(); 902 Timestamp timestamp = event.timestamp();
897 903
898 - markOfflineInternal(deviceId, timestamp); 904 + notifyDelegateIfNotNull(markOfflineInternal(deviceId, timestamp));
899 } 905 }
900 } 906 }
901 907
...@@ -909,7 +915,7 @@ public class GossipDeviceStore ...@@ -909,7 +915,7 @@ public class GossipDeviceStore
909 DeviceId deviceId = event.deviceId(); 915 DeviceId deviceId = event.deviceId();
910 Timestamp timestamp = event.timestamp(); 916 Timestamp timestamp = event.timestamp();
911 917
912 - removeDeviceInternal(deviceId, timestamp); 918 + notifyDelegateIfNotNull(removeDeviceInternal(deviceId, timestamp));
913 } 919 }
914 } 920 }
915 921
...@@ -924,7 +930,7 @@ public class GossipDeviceStore ...@@ -924,7 +930,7 @@ public class GossipDeviceStore
924 DeviceId deviceId = event.deviceId(); 930 DeviceId deviceId = event.deviceId();
925 Timestamped<List<PortDescription>> portDescriptions = event.portDescriptions(); 931 Timestamped<List<PortDescription>> portDescriptions = event.portDescriptions();
926 932
927 - updatePortsInternal(providerId, deviceId, portDescriptions); 933 + notifyDelegate(updatePortsInternal(providerId, deviceId, portDescriptions));
928 } 934 }
929 } 935 }
930 936
...@@ -939,7 +945,7 @@ public class GossipDeviceStore ...@@ -939,7 +945,7 @@ public class GossipDeviceStore
939 DeviceId deviceId = event.deviceId(); 945 DeviceId deviceId = event.deviceId();
940 Timestamped<PortDescription> portDescription = event.portDescription(); 946 Timestamped<PortDescription> portDescription = event.portDescription();
941 947
942 - updatePortStatusInternal(providerId, deviceId, portDescription); 948 + notifyDelegateIfNotNull(updatePortStatusInternal(providerId, deviceId, portDescription));
943 } 949 }
944 } 950 }
945 } 951 }
......