- public static Props props() {
- return Props.create(new Creator<DataChangeListener>() {
- @Override
- public DataChangeListener create() throws Exception {
- return new DataChangeListener();
- }
+ private void enableNotification(EnableNotification message) {
+ notificationsEnabled = message.isEnabled();
+ }
+
+ private void dataChanged(Object message) {
+
+ // Do nothing if notifications are not enabled
+ if(!notificationsEnabled){
+ return;
+ }
+
+ DataChanged reply = (DataChanged) message;
+ AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>>
+ change = reply.getChange();
+ this.listener.onDataChanged(change);
+
+ // It seems the sender is never null but it doesn't hurt to check. If the caller passes in
+ // a null sender (ActorRef.noSender()), akka translates that to the deadLetters actor.
+ if(getSender() != null && !getContext().system().deadLetters().equals(getSender())) {
+ getSender().tell(new DataChangedReply(), getSelf());
+ }
+ }
+
+ public static Props props(final AsyncDataChangeListener<YangInstanceIdentifier,
+ NormalizedNode<?, ?>> listener) {
+ return Props.create(new DataChangeListenerCreator(listener));
+ }
+
+ private static class DataChangeListenerCreator implements Creator<DataChangeListener> {
+ private static final long serialVersionUID = 1L;
+
+ final AsyncDataChangeListener<YangInstanceIdentifier, NormalizedNode<?, ?>> listener;