- @Override
- void onMessage(final RegisterDataTreeChangeListener registerTreeChangeListener, final boolean isLeader) {
- LOG.debug("{}: registerTreeChangeListener for {}, leader: {}", shard.persistenceId(), registerTreeChangeListener.getPath(), isLeader);
-
- final ListenerRegistration<DOMDataTreeChangeListener> registration;
- if (!isLeader) {
- LOG.debug("{}: Shard is not the leader - delaying registration", shard.persistenceId());
-
- DelayedDataTreeListenerRegistration delayedReg =
- new DelayedDataTreeListenerRegistration(registerTreeChangeListener);
- delayedRegistrations.add(delayedReg);
- registration = delayedReg;
- } else {
- registration = createDelegate(registerTreeChangeListener);
- }
-
- ActorRef listenerRegistration = shard.getContext().actorOf(
- DataTreeChangeListenerRegistrationActor.props(registration));
-
- LOG.debug("{}: registerDataChangeListener sending reply, listenerRegistrationPath = {} ",
- shard.persistenceId(), listenerRegistration.path());
-
- shard.getSender().tell(new RegisterDataTreeChangeListenerReply(listenerRegistration), shard.getSelf());