- Entry<DataChangeListenerRegistration<AsyncDataChangeListener<YangInstanceIdentifier, NormalizedNode<?, ?>>>,
- Optional<DataTreeCandidate>> regEntry = getShard().getDataStore().registerChangeListener(
- message.getPath(), listener, message.getScope());
-
- getShard().getDataStore().notifyOfInitialData(regEntry.getKey(), regEntry.getValue());
-
- return regEntry;
- }
-
- @Override
- protected DelayedDataChangeListenerRegistration newDelayedListenerRegistration(RegisterChangeListener message) {
- return new DelayedDataChangeListenerRegistration(message);
- }
-
- @Override
- protected ActorRef newRegistrationActor(
- ListenerRegistration<AsyncDataChangeListener<YangInstanceIdentifier, NormalizedNode<?, ?>>> registration) {
- return createActor(DataChangeListenerRegistrationActor.props(registration));
- }
-
- @Override
- protected Object newRegistrationReplyMessage(ActorRef registrationActor) {
- return new RegisterChangeListenerReply(registrationActor);
+ final ShardDataTree shardDataTree = getShard().getDataStore();
+ shardDataTree.registerDataChangeListener(message.getPath(), listener, message.getScope(),
+ shardDataTree.readCurrentData(), registration -> registrationActor.tell(
+ new DataTreeNotificationListenerRegistrationActor.SetRegistration(registration, () ->
+ removeListenerActor(listenerActor)), ActorRef.noSender()));