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%2Fshardmanager%2FShardPeerAddressResolver.java;h=6c33652bb1a6cde93cad77ec48adbe4068289060;hp=62b8e93fb545de80ef4faa9ed765238c0f1bfe8f;hb=HEAD;hpb=dc6370feeb5fc47be3e267bf85d6354013d0409b diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/shardmanager/ShardPeerAddressResolver.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/shardmanager/ShardPeerAddressResolver.java index 62b8e93fb5..6c33652bb1 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/shardmanager/ShardPeerAddressResolver.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/shardmanager/ShardPeerAddressResolver.java @@ -7,11 +7,14 @@ */ package org.opendaylight.controller.cluster.datastore.shardmanager; +import static java.util.Objects.requireNonNull; + import akka.actor.Address; -import com.google.common.base.Preconditions; +import akka.actor.AddressFromURIString; import java.util.ArrayList; import java.util.Collection; import java.util.Map; +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import org.opendaylight.controller.cluster.access.concepts.MemberName; @@ -33,28 +36,32 @@ class ShardPeerAddressResolver implements PeerAddressResolver { private final String shardManagerType; private final MemberName localMemberName; - public ShardPeerAddressResolver(String shardManagerType, MemberName localMemberName) { + ShardPeerAddressResolver(final String shardManagerType, final MemberName localMemberName) { this.shardManagerIdentifier = ShardManagerIdentifier.builder().type(shardManagerType).build().toString(); this.shardManagerType = shardManagerType; - this.localMemberName = Preconditions.checkNotNull(localMemberName); + this.localMemberName = requireNonNull(localMemberName); } - void addPeerAddress(MemberName memberName, Address address) { + void addPeerAddress(final MemberName memberName, final Address address) { memberNameToAddress.put(memberName, address); } - void removePeerAddress(MemberName memberName) { + void removePeerAddress(final MemberName memberName) { memberNameToAddress.remove(memberName); } - Address getPeerAddress(MemberName memberName) { + Set getPeerMembers() { + return this.memberNameToAddress.keySet(); + } + + Address getPeerAddress(final MemberName memberName) { return memberNameToAddress.get(memberName); } Collection getShardManagerPeerActorAddresses() { Collection peerAddresses = new ArrayList<>(); - for(Map.Entry entry: memberNameToAddress.entrySet()) { - if(!localMemberName.equals(entry.getKey())) { + for (Map.Entry entry: memberNameToAddress.entrySet()) { + if (!localMemberName.equals(entry.getKey())) { peerAddresses.add(getShardManagerActorPathBuilder(entry.getValue()).toString()); } } @@ -62,13 +69,13 @@ class ShardPeerAddressResolver implements PeerAddressResolver { return peerAddresses; } - ShardIdentifier getShardIdentifier(MemberName memberName, String shardName) { + ShardIdentifier getShardIdentifier(final MemberName memberName, final String shardName) { return ShardIdentifier.create(shardName, memberName, shardManagerType); } - String getShardActorAddress(String shardName, MemberName memberName) { + String getShardActorAddress(final String shardName, final MemberName memberName) { Address memberAddress = memberNameToAddress.get(memberName); - if(memberAddress != null) { + if (memberAddress != null) { return getShardManagerActorPathBuilder(memberAddress).append("/").append( getShardIdentifier(memberName, shardName)).toString(); } @@ -76,12 +83,12 @@ class ShardPeerAddressResolver implements PeerAddressResolver { return null; } - StringBuilder getShardManagerActorPathBuilder(Address address) { + StringBuilder getShardManagerActorPathBuilder(final Address address) { return new StringBuilder().append(address.toString()).append("/user/").append(shardManagerIdentifier); } @Override - public String resolve(String peerId) { + public String resolve(final String peerId) { if (peerId == null) { return null; } @@ -89,4 +96,10 @@ class ShardPeerAddressResolver implements PeerAddressResolver { ShardIdentifier shardId = ShardIdentifier.fromShardIdString(peerId); return getShardActorAddress(shardId.getShardName(), shardId.getMemberName()); } + + @Override + public void setResolved(final String peerId, final String address) { + memberNameToAddress.put(ShardIdentifier.fromShardIdString(peerId).getMemberName(), + AddressFromURIString.parse(address)); + } }