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%2Fmessages%2FRegisterChangeListener.java;h=c1ec0a87cba2c64db745879fa08211cea9821b2c;hp=0123a701471e29ef5a81ad41dc3fb2304e4cbf62;hb=c222e37f2a0f0f3f6266242fbea2d3b018f4e6e3;hpb=287688202f1166cfecf2149257de70ec627922fd diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/RegisterChangeListener.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/RegisterChangeListener.java index 0123a70147..c1ec0a87cb 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/RegisterChangeListener.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/RegisterChangeListener.java @@ -8,32 +8,56 @@ package org.opendaylight.controller.cluster.datastore.messages; +import akka.actor.ActorPath; +import akka.actor.ActorSystem; +import org.opendaylight.controller.cluster.datastore.utils.InstanceIdentifierUtils; import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker; -import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeListener; -import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; - -public class RegisterChangeListener { - private final InstanceIdentifier path; - private final AsyncDataChangeListener> listener; - private final AsyncDataBroker.DataChangeScope scope; - - - public RegisterChangeListener(InstanceIdentifier path, AsyncDataChangeListener> listener, AsyncDataBroker.DataChangeScope scope) { - this.path = path; - this.listener = listener; - this.scope = scope; +import org.opendaylight.controller.protobuff.messages.registration.ListenerRegistrationMessages; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; + +public class RegisterChangeListener implements SerializableMessage { + public static final Class SERIALIZABLE_CLASS = ListenerRegistrationMessages.RegisterChangeListener.class; + private final YangInstanceIdentifier path; + private final ActorPath dataChangeListenerPath; + private final AsyncDataBroker.DataChangeScope scope; + + + public RegisterChangeListener(YangInstanceIdentifier path, + ActorPath dataChangeListenerPath, + AsyncDataBroker.DataChangeScope scope) { + this.path = path; + this.dataChangeListenerPath = dataChangeListenerPath; + this.scope = scope; + } + + public YangInstanceIdentifier getPath() { + return path; + } + + + public AsyncDataBroker.DataChangeScope getScope() { + return scope; + } + + public ActorPath getDataChangeListenerPath() { + return dataChangeListenerPath; + } + + + @Override + public ListenerRegistrationMessages.RegisterChangeListener toSerializable() { + return ListenerRegistrationMessages.RegisterChangeListener.newBuilder() + .setInstanceIdentifierPath(InstanceIdentifierUtils.toSerializable(path)) + .setDataChangeListenerActorPath(dataChangeListenerPath.toString()) + .setDataChangeScope(scope.ordinal()).build(); + } + + public static RegisterChangeListener fromSerializable(ActorSystem actorSystem,Object serializable){ + ListenerRegistrationMessages.RegisterChangeListener o = (ListenerRegistrationMessages.RegisterChangeListener) serializable; + return new RegisterChangeListener(InstanceIdentifierUtils.fromSerializable(o.getInstanceIdentifierPath()), + actorSystem.actorFor(o.getDataChangeListenerActorPath()).path(), + AsyncDataBroker.DataChangeScope.values()[o.getDataChangeScope()]); } - public InstanceIdentifier getPath() { - return path; - } - public AsyncDataChangeListener> getListener() { - return listener; - } - - public AsyncDataBroker.DataChangeScope getScope() { - return scope; - } }