org.infinispan.distribution.ch
Class AbstractConsistentHash

java.lang.Object
  extended by org.infinispan.distribution.ch.AbstractConsistentHash
All Implemented Interfaces:
ConsistentHash
Direct Known Subclasses:
AbstractWheelConsistentHash, ExperimentalDefaultConsistentHash, UnionConsistentHash

public abstract class AbstractConsistentHash
extends Object
implements ConsistentHash

An abstract consistent hash implementation that handles common implementations of certain methods. In particular, default implementations of locateAll(java.util.Collection, int) and isKeyLocalToAddress(org.infinispan.remoting.transport.Address, Object, int).

The versions provided here are relatively inefficient in that they call ConsistentHash.locate(Object, int) first (and sometimes in a loop). Depending on the algorithm used, there may be more efficient ways to achieve the same results and in such cases the methods provided here should be overridden.

Since:
4.0
Author:
Manik Surtani, Mircea.Markus@jboss.com

Field Summary
protected  Set<Address> caches
           
protected  GroupManager groupManager
           
 
Constructor Summary
AbstractConsistentHash()
           
 
Method Summary
 Set<Address> getCaches()
          Should return a collection of cache addresses in the cluster.
protected  Object getGrouping(Object key)
          Get the grouping, if any, for this key.
 boolean isKeyLocalToAddress(Address a, Object key, int replCount)
          Test to see whether a key is mapped to a given address.
 Map<Object,List<Address>> locateAll(Collection<Object> keys, int replCount)
          The logical equivalent of calling ConsistentHash.locate(Object, int) multiple times for each key in the collection of keys.
 void setCaches(Set<Address> caches)
          Sets the collection of cache addresses in the cluster.
 void setGroupManager(GroupManager groupManager)
           
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.infinispan.distribution.ch.ConsistentHash
getBackupsForNode, getHashId, getHashSpace, getStateProvidersOnJoin, getStateProvidersOnLeave, locate
 

Field Detail

caches

protected Set<Address> caches

groupManager

protected GroupManager groupManager
Constructor Detail

AbstractConsistentHash

public AbstractConsistentHash()
Method Detail

setCaches

public void setCaches(Set<Address> caches)
Description copied from interface: ConsistentHash
Sets the collection of cache addresses in the cluster. The implementation should store these internally and use these to locate keys.

Specified by:
setCaches in interface ConsistentHash
Parameters:
caches - A set of unique caches in cluster.

getCaches

public Set<Address> getCaches()
Description copied from interface: ConsistentHash
Should return a collection of cache addresses in the cluster.

Specified by:
getCaches in interface ConsistentHash
Returns:
set of unique of cache addresses

locateAll

public Map<Object,List<Address>> locateAll(Collection<Object> keys,
                                           int replCount)
Description copied from interface: ConsistentHash
The logical equivalent of calling ConsistentHash.locate(Object, int) multiple times for each key in the collection of keys. Implementations may be optimised for such a bulk lookup, or may just repeatedly call ConsistentHash.locate(Object, int).

Specified by:
locateAll in interface ConsistentHash
Parameters:
keys - keys to locate
replCount - replication count (number of copies) for each key
Returns:
Map of locations, keyed on key.

isKeyLocalToAddress

public boolean isKeyLocalToAddress(Address a,
                                   Object key,
                                   int replCount)
Description copied from interface: ConsistentHash
Test to see whether a key is mapped to a given address.

Specified by:
isKeyLocalToAddress in interface ConsistentHash
Parameters:
a - address to test
key - key to test
replCount - repl count
Returns:
true if the key is mapped to the address; false otherwise

setGroupManager

public void setGroupManager(GroupManager groupManager)

toString

public String toString()
Overrides:
toString in class Object

getGrouping

protected Object getGrouping(Object key)
Get the grouping, if any, for this key.

Parameters:
key - the key to get the grouping for
Returns:
the group, or if no group is applicable, the key

-->

Copyright © 2011 JBoss, a division of Red Hat. All Rights Reserved.