*/
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;
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<MemberName> getPeerMembers() {
+ return this.memberNameToAddress.keySet();
+ }
+
+ Address getPeerAddress(final MemberName memberName) {
return memberNameToAddress.get(memberName);
}
Collection<String> getShardManagerPeerActorAddresses() {
Collection<String> peerAddresses = new ArrayList<>();
- for(Map.Entry<MemberName, Address> entry: memberNameToAddress.entrySet()) {
- if(!localMemberName.equals(entry.getKey())) {
+ for (Map.Entry<MemberName, Address> entry: memberNameToAddress.entrySet()) {
+ if (!localMemberName.equals(entry.getKey())) {
peerAddresses.add(getShardManagerActorPathBuilder(entry.getValue()).toString());
}
}
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();
}
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;
}
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));
+ }
}