X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-remoterpc-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fremote%2Frpc%2Fregistry%2Fgossip%2FBucketStore.java;h=cc24e6845f852df17b52e604cc113f7e34a4a6d8;hp=628deb4311cebe1da5ff1b44deb715d933b8b8b2;hb=92ce52ab3df561a2a07bf56c7115123b0825449e;hpb=3e5bfba47ae5fe04360343073273a141730daefd diff --git a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/registry/gossip/BucketStore.java b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/registry/gossip/BucketStore.java index 628deb4311..cc24e6845f 100644 --- a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/registry/gossip/BucketStore.java +++ b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/registry/gossip/BucketStore.java @@ -13,7 +13,7 @@ import akka.actor.ActorRefProvider; import akka.actor.Address; import akka.actor.Props; import akka.cluster.ClusterActorRefProvider; -import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; import java.util.HashMap; import java.util.Map; import java.util.Set; @@ -69,8 +69,8 @@ public class BucketStore> extends AbstractUntypedActorWithMe private final RemoteRpcProviderConfig config; - public BucketStore(){ - config = new RemoteRpcProviderConfig(getContext().system().settings().config()); + public BucketStore(RemoteRpcProviderConfig config){ + this.config = Preconditions.checkNotNull(config); } @Override @@ -79,7 +79,7 @@ public class BucketStore> extends AbstractUntypedActorWithMe selfAddress = provider.getDefaultAddress(); if ( provider instanceof ClusterActorRefProvider) { - getContext().actorOf(Props.create(Gossiper.class).withMailbox(config.getMailBoxName()), "gossiper"); + getContext().actorOf(Props.create(Gossiper.class, config).withMailbox(config.getMailBoxName()), "gossiper"); } } @@ -102,7 +102,7 @@ public class BucketStore> extends AbstractUntypedActorWithMe } else if (message instanceof GetBucketVersions) { receiveGetBucketVersions(); } else if (message instanceof UpdateRemoteBuckets) { - receiveUpdateRemoteBuckets(((UpdateRemoteBuckets) message).getBuckets()); + receiveUpdateRemoteBuckets(((UpdateRemoteBuckets) message).getBuckets()); } else { if(log.isDebugEnabled()) { log.debug("Unhandled message [{}]", message); @@ -111,12 +111,16 @@ public class BucketStore> extends AbstractUntypedActorWithMe } } + protected RemoteRpcProviderConfig getConfig() { + return config; + } + /** * Returns all the buckets the this node knows about, self owned + remote */ void receiveGetAllBuckets(){ final ActorRef sender = getSender(); - sender.tell(new GetAllBucketsReply(getAllBuckets()), getSelf()); + sender.tell(new GetAllBucketsReply(getAllBuckets()), getSelf()); } /** @@ -124,9 +128,8 @@ public class BucketStore> extends AbstractUntypedActorWithMe * * @return self owned + remote buckets */ - @SuppressWarnings("rawtypes") - Map getAllBuckets(){ - Map all = new HashMap<>(remoteBuckets.size() + 1); + Map> getAllBuckets(){ + Map> all = new HashMap<>(remoteBuckets.size() + 1); //first add the local bucket all.put(selfAddress, new BucketImpl<>(localBucket)); @@ -142,11 +145,10 @@ public class BucketStore> extends AbstractUntypedActorWithMe * * @param members requested members */ - @SuppressWarnings("rawtypes") void receiveGetBucketsByMembers(Set
members){ final ActorRef sender = getSender(); - Map buckets = getBucketsByMembers(members); - sender.tell(new GetBucketsByMembersReply(buckets), getSelf()); + Map> buckets = getBucketsByMembers(members); + sender.tell(new GetBucketsByMembersReply(buckets), getSelf()); } /** @@ -155,9 +157,8 @@ public class BucketStore> extends AbstractUntypedActorWithMe * @param members requested members * @return buckets for requested memebers */ - @SuppressWarnings("rawtypes") - Map getBucketsByMembers(Set
members) { - Map buckets = new HashMap<>(); + Map> getBucketsByMembers(Set
members) { + Map> buckets = new HashMap<>(); //first add the local bucket if asked if (members.contains(selfAddress)) { @@ -189,8 +190,7 @@ public class BucketStore> extends AbstractUntypedActorWithMe * @param receivedBuckets buckets sent by remote * {@link org.opendaylight.controller.remote.rpc.registry.gossip.Gossiper} */ - @SuppressWarnings({ "rawtypes", "unchecked" }) - void receiveUpdateRemoteBuckets(Map receivedBuckets){ + void receiveUpdateRemoteBuckets(Map> receivedBuckets){ log.debug("{}: receiveUpdateRemoteBuckets: {}", selfAddress, receivedBuckets); if (receivedBuckets == null || receivedBuckets.isEmpty()) { @@ -200,7 +200,7 @@ public class BucketStore> extends AbstractUntypedActorWithMe //Remote cant update self's bucket receivedBuckets.remove(selfAddress); - for (Map.Entry entry : receivedBuckets.entrySet()){ + for (Map.Entry> entry : receivedBuckets.entrySet()){ Long localVersion = versions.get(entry.getKey()); if (localVersion == null) { @@ -228,9 +228,14 @@ public class BucketStore> extends AbstractUntypedActorWithMe if(log.isDebugEnabled()) { log.debug("State after update - Local Bucket [{}], Remote Buckets [{}]", localBucket, remoteBuckets); } + + onBucketsUpdated(); + } + + protected void onBucketsUpdated() { } - protected BucketImpl getLocalBucket() { + public BucketImpl getLocalBucket() { return localBucket; } @@ -239,12 +244,11 @@ public class BucketStore> extends AbstractUntypedActorWithMe versions.put(selfAddress, localBucket.getVersion()); } - protected Map> getRemoteBuckets() { + public Map> getRemoteBuckets() { return remoteBuckets; } - @VisibleForTesting - Map getVersions() { + public Map getVersions() { return versions; } }