X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2FDataChangeListenerRegistration.java;h=a8d7d2210567eb75c20267ea0534288fae779798;hp=e90d53c69c2947cb7a1a7fa072c3e3fdf1892c0c;hb=37f0504d391efd8b7d61403759fcc22a6dd3a093;hpb=0d78fea60c4818145e7bd8479427dfc04f0f8145 diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerRegistration.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerRegistration.java index e90d53c69c..a8d7d22105 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerRegistration.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerRegistration.java @@ -8,43 +8,64 @@ package org.opendaylight.controller.cluster.datastore; +import akka.actor.PoisonPill; import akka.actor.Props; -import akka.actor.UntypedActor; import akka.japi.Creator; +import org.opendaylight.controller.cluster.common.actor.AbstractUntypedActor; + import org.opendaylight.controller.cluster.datastore.messages.CloseDataChangeListenerRegistration; import org.opendaylight.controller.cluster.datastore.messages.CloseDataChangeListenerRegistrationReply; import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeListener; -import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; +import org.opendaylight.yangtools.concepts.ListenerRegistration; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -public class DataChangeListenerRegistration extends UntypedActor{ +public class DataChangeListenerRegistration extends AbstractUntypedActor { + + private final ListenerRegistration>> + registration; + + public DataChangeListenerRegistration( + ListenerRegistration>> registration) { + this.registration = registration; + } + + @Override + public void handleReceive(Object message) throws Exception { + if (message.getClass().equals(CloseDataChangeListenerRegistration.SERIALIZABLE_CLASS)) { + closeListenerRegistration( + new CloseDataChangeListenerRegistration()); + } + } + + public static Props props( + final ListenerRegistration>> registration) { + return Props.create(new DataChangeListenerRegistrationCreator(registration)); + } + + private void closeListenerRegistration( + CloseDataChangeListenerRegistration message) { + registration.close(); + getSender() + .tell(new CloseDataChangeListenerRegistrationReply().toSerializable(), getSelf()); + getSelf().tell(PoisonPill.getInstance(), getSelf()); + } - private final org.opendaylight.yangtools.concepts.ListenerRegistration>> registration; + private static class DataChangeListenerRegistrationCreator + implements Creator { + private static final long serialVersionUID = 1L; + final ListenerRegistration>> registration; - public DataChangeListenerRegistration( - org.opendaylight.yangtools.concepts.ListenerRegistration>> registration) { - this.registration = registration; - } + DataChangeListenerRegistrationCreator( + ListenerRegistration>> registration) { + this.registration = registration; + } - @Override - public void onReceive(Object message) throws Exception { - if(message instanceof CloseDataChangeListenerRegistration){ - closeListenerRegistration((CloseDataChangeListenerRegistration) message); + @Override + public DataChangeListenerRegistration create() throws Exception { + return new DataChangeListenerRegistration(registration); + } } - } - - public static Props props(final org.opendaylight.yangtools.concepts.ListenerRegistration>> registration){ - return Props.create(new Creator(){ - - @Override - public DataChangeListenerRegistration create() throws Exception { - return new DataChangeListenerRegistration(registration); - } - }); - } - - private void closeListenerRegistration(CloseDataChangeListenerRegistration message){ - registration.close(); - getSender().tell(new CloseDataChangeListenerRegistrationReply(), getSelf()); - } }