- @Override public void handleReceive(Object message) throws Exception {
- if(message.getClass().equals(DataChanged.SERIALIZABLE_CLASS)){
- DataChanged reply = DataChanged.fromSerialize(schemaContext,message, pathId);
- AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>>
- change = reply.getChange();
- this.listener.onDataChanged(change);
+ @Override
+ public void handleReceive(Object message) {
+ if (message instanceof DataChanged){
+ dataChanged(message);
+ } else if (message instanceof EnableNotification){
+ enableNotification((EnableNotification) message);
+ } else {
+ unknownMessage(message);
+ }
+ }
+
+ private void enableNotification(EnableNotification message) {
+ notificationsEnabled = message.isEnabled();
+ LOG.debug("{} notifications for listener {}", (notificationsEnabled ? "Enabled" : "Disabled"),
+ listener);
+ }
+
+ private void dataChanged(Object message) {
+
+ // Do nothing if notifications are not enabled
+ if(!notificationsEnabled) {
+ LOG.debug("Notifications not enabled for listener {} - dropping change notification", listener);
+ return;
+ }
+
+ DataChanged reply = (DataChanged) message;
+ AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> change = reply.getChange();
+
+ LOG.debug("Sending change notification {} to listener {}", change, listener);