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%2FLeaderLocalDelegateFactory.java;h=3f927736b5a8eaf5ee1be0e355a43f616fb2d9a1;hp=891c0bf6d426c5a65690e55772bb8d82c9f8c0b3;hb=daaef05cbf70e6cbec9af181258faead6d9620a6;hpb=8f0395b38dbfdf6b3164cb68b1cba651b1075a07 diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/LeaderLocalDelegateFactory.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/LeaderLocalDelegateFactory.java index 891c0bf6d4..3f927736b5 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/LeaderLocalDelegateFactory.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/LeaderLocalDelegateFactory.java @@ -7,14 +7,55 @@ */ package org.opendaylight.controller.cluster.datastore; +import akka.actor.ActorPath; +import akka.actor.ActorRef; +import akka.actor.ActorSelection; +import akka.actor.Props; +import com.google.common.base.Preconditions; + /** * Base class for factories instantiating delegates which are local to the * shard leader. * * delegate type * message type + * initial state type */ -abstract class LeaderLocalDelegateFactory extends DelegateFactory { +abstract class LeaderLocalDelegateFactory extends DelegateFactory { + private final Shard shard; + + protected LeaderLocalDelegateFactory(final Shard shard) { + this.shard = Preconditions.checkNotNull(shard); + } + + protected final ActorRef getSelf() { + return shard.getSelf(); + } + + protected final Shard getShard() { + return shard; + } + + protected final String persistenceId() { + return shard.persistenceId(); + } + + protected final void tellSender(final Object message) { + shard.getSender().tell(message, getSelf()); + } + + protected final ActorRef createActor(final Props props) { + return shard.getContext().actorOf(props); + } + + protected final ActorSelection selectActor(ActorRef ref) { + return shard.getContext().system().actorSelection(ref.path()); + } + + protected final ActorSelection selectActor(ActorPath path) { + return shard.getContext().system().actorSelection(path); + } + /** * Invoked whenever the local shard's leadership role changes. *