
org.infinispan.distribution.group.GroupingConsistentHash Maven / Gradle / Ivy
package org.infinispan.distribution.group;
import org.infinispan.commons.hash.Hash;
import org.infinispan.distribution.ch.ConsistentHash;
import org.infinispan.remoting.transport.Address;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* {@link ConsistentHash} wrapper that groups keys to the same node based on their @{@link Group}
* annotation.
*
* It uses a {@link GroupManager} to determine the group key from annotations.
*
* @author Dan Berindei
* @since 5.2
*/
public class GroupingConsistentHash implements ConsistentHash {
private final ConsistentHash ch;
private final GroupManager groupManager;
public GroupingConsistentHash(ConsistentHash ch, GroupManager groupManager) {
this.ch = ch;
this.groupManager = groupManager;
}
@Override
public int getNumSegments() {
return ch.getNumSegments();
}
@Override
public int getNumOwners() {
return ch.getNumOwners();
}
@Override
public Hash getHashFunction() {
return null;
}
@Override
public List getMembers() {
return ch.getMembers();
}
@Override
public int getSegment(Object key) {
return ch.getSegment(getGroupKey(key));
}
@Override
public List locateOwnersForSegment(int segmentId) {
return ch.locateOwnersForSegment(segmentId);
}
@Override
public Address locatePrimaryOwnerForSegment(int segmentId) {
return ch.locatePrimaryOwnerForSegment(segmentId);
}
@Override
public Set getSegmentsForOwner(Address owner) {
return ch.getSegmentsForOwner(owner);
}
@Override
public Set getPrimarySegmentsForOwner(Address owner) {
return ch.getPrimarySegmentsForOwner(owner);
}
@Override
public String getRoutingTableAsString() {
return ch.getRoutingTableAsString();
}
@Override
public Address locatePrimaryOwner(Object key) {
return ch.locatePrimaryOwner(getGroupKey(key));
}
@Override
public List locateOwners(Object key) {
return ch.locateOwners(getGroupKey(key));
}
@Override
public Set locateAllOwners(Collection
© 2015 - 2025 Weber Informatics LLC | Privacy Policy