package org.opendaylight.controller.cluster.datastore.messages;
+import akka.actor.ActorPath;
+import akka.actor.ActorSystem;
+import org.opendaylight.controller.cluster.datastore.util.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;
+import org.opendaylight.controller.protobuff.messages.registration.ListenerRegistrationMessages;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-public class RegisterChangeListener {
- private final InstanceIdentifier path;
- private final AsyncDataChangeListener<InstanceIdentifier, NormalizedNode<?, ?>> listener;
- private final AsyncDataBroker.DataChangeScope scope;
+public class RegisterChangeListener implements SerializableMessage {
+ public static final Class<ListenerRegistrationMessages.RegisterChangeListener> SERIALIZABLE_CLASS =
+ ListenerRegistrationMessages.RegisterChangeListener.class;
+ private final YangInstanceIdentifier path;
+ private final ActorPath dataChangeListenerPath;
+ private final AsyncDataBroker.DataChangeScope scope;
- public RegisterChangeListener(InstanceIdentifier path, AsyncDataChangeListener<InstanceIdentifier, NormalizedNode<?, ?>> listener, AsyncDataBroker.DataChangeScope scope) {
- this.path = path;
- this.listener = listener;
- this.scope = scope;
- }
- public InstanceIdentifier getPath() {
- return path;
- }
+ public RegisterChangeListener(YangInstanceIdentifier path,
+ ActorPath dataChangeListenerPath,
+ AsyncDataBroker.DataChangeScope scope) {
+ this.path = path;
+ this.dataChangeListenerPath = dataChangeListenerPath;
+ this.scope = scope;
+ }
- public AsyncDataChangeListener<InstanceIdentifier, NormalizedNode<?, ?>> getListener() {
- return listener;
- }
+ public YangInstanceIdentifier getPath() {
+ return path;
+ }
+
+
+ public AsyncDataBroker.DataChangeScope getScope() {
+ return scope;
+ }
- 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()]);
}
+
+
}