import org.opendaylight.controller.cluster.common.actor.AbstractUntypedActor;
import org.opendaylight.controller.cluster.datastore.messages.DataTreeChanged;
import org.opendaylight.controller.cluster.datastore.messages.DataTreeChangedReply;
+import org.opendaylight.controller.cluster.datastore.messages.DataTreeListenerInfo;
import org.opendaylight.controller.cluster.datastore.messages.EnableNotification;
+import org.opendaylight.controller.cluster.datastore.messages.GetInfo;
import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeChangeListener;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
private final DOMDataTreeChangeListener listener;
private final YangInstanceIdentifier registeredPath;
private boolean notificationsEnabled = false;
+ private long notificationCount;
+ private String logContext = "";
private DataTreeChangeListenerActor(final DOMDataTreeChangeListener listener,
final YangInstanceIdentifier registeredPath) {
dataChanged((DataTreeChanged)message);
} else if (message instanceof EnableNotification) {
enableNotification((EnableNotification) message);
+ } else if (message instanceof GetInfo) {
+ getSender().tell(new DataTreeListenerInfo(listener.toString(), registeredPath.toString(),
+ notificationsEnabled, notificationCount), getSelf());
} else {
unknownMessage(message);
}
private void dataChanged(final DataTreeChanged message) {
// Do nothing if notifications are not enabled
if (!notificationsEnabled) {
- LOG.debug("Notifications not enabled for listener {} - dropping change notification", listener);
+ LOG.debug("{}: Notifications not enabled for listener {} - dropping change notification",
+ logContext, listener);
return;
}
- LOG.debug("Sending change notification {} to listener {}", message.getChanges(), listener);
+ LOG.debug("{}: Sending {} change notification(s) {} to listener {}", logContext, message.getChanges().size(),
+ message.getChanges(), listener);
+
+ notificationCount++;
try {
this.listener.onDataTreeChanged(message.getChanges());
} catch (Exception e) {
- LOG.error("Error notifying listener {}", this.listener, e);
+ LOG.error("{}: Error notifying listener {}", logContext, this.listener, e);
}
// TODO: do we really need this?
}
private void enableNotification(final EnableNotification message) {
+ logContext = message.getLogContext();
notificationsEnabled = message.isEnabled();
- LOG.debug("{} notifications for listener {}", notificationsEnabled ? "Enabled" : "Disabled",
+ LOG.debug("{}: {} notifications for listener {}", logContext, notificationsEnabled ? "Enabled" : "Disabled",
listener);
}