## org.apache.cassandra.locator
Class AbstractReplicationStrategy

    java.lang.Object
      org.apache.cassandra.locator.AbstractReplicationStrategy

Direct Known Subclasses:
  LocalStrategy, NetworkTopologyStrategy, OldNetworkTopologyStrategy, SimpleStrategy

    public abstract class AbstractReplicationStrategy

extends java.lang.Object

A abstract parent for all replication strategies.

Field Summary
`java.util.Map<java.lang.String,java.lang.String>` `configOptions`
`IEndpointSnitch` `snitch`
`java.lang.String` `table`

Method Summary
`void` `cacheEndpoint(Token t, java.util.ArrayList<java.net.InetAddress> addr)`
`abstract java.util.List<java.net.InetAddress>` `calculateNaturalEndpoints(Token searchToken, TokenMetadata tokenMetadata)` calculate the natural endpoints for the given token
`void` `clearEndpointCache()`
`static AbstractReplicationStrategy` `createReplicationStrategy(java.lang.String table, java.lang.Class<? extends AbstractReplicationStrategy> strategyClass, TokenMetadata tokenMetadata, IEndpointSnitch snitch, java.util.Map<java.lang.String,java.lang.String> strategyOptions)`
`static AbstractReplicationStrategy` `createReplicationStrategy(java.lang.String table, java.lang.String strategyClassName, TokenMetadata tokenMetadata, IEndpointSnitch snitch, java.util.Map<java.lang.String,java.lang.String> strategyOptions)`
`com.google.common.collect.Multimap<java.net.InetAddress,Range<Token>>` `getAddressRanges()`
`com.google.common.collect.Multimap<java.net.InetAddress,Range<Token>>` `getAddressRanges(TokenMetadata metadata)`
`java.util.ArrayList<java.net.InetAddress>` `getCachedEndpoints(Token t)`
`static java.lang.Class<AbstractReplicationStrategy>` `getClass(java.lang.String cls)`
`java.util.ArrayList<java.net.InetAddress>` `getNaturalEndpoints(RingPosition searchPosition)` get the (possibly cached) endpoints that should store the given Token.
`java.util.Collection<Range<Token>>` `getPendingAddressRanges(TokenMetadata metadata, Token pendingToken, java.net.InetAddress pendingAddress)`
`com.google.common.collect.Multimap<Range<Token>,java.net.InetAddress>` `getRangeAddresses(TokenMetadata metadata)`
`abstract int` `getReplicationFactor()` calculate the RF based on strategy_options.
`IWriteResponseHandler` `getWriteResponseHandler(java.util.Collection<java.net.InetAddress> writeEndpoints, ConsistencyLevel consistency_level, java.lang.Runnable callback)`
`void` `invalidateCachedTokenEndpointValues()`
`abstract void` `validateOptions()`
`protected void` `validateReplicationFactor(java.lang.String rf)`
`protected void` `warnOnUnexpectedOptions(java.util.Collection<java.lang.String> expectedOptions)`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### table

    public final java.lang.String table

### configOptions

    public final java.util.Map<java.lang.String,java.lang.String> configOptions

### snitch

    public IEndpointSnitch snitch

Method Detail

### getCachedEndpoints

    public java.util.ArrayList<java.net.InetAddress> getCachedEndpoints(Token t)

### cacheEndpoint

    public void cacheEndpoint(Token t,
                              java.util.ArrayList<java.net.InetAddress> addr)

### clearEndpointCache

    public void clearEndpointCache()

### getNaturalEndpoints

    public java.util.ArrayList<java.net.InetAddress> getNaturalEndpoints(RingPosition searchPosition)

  get the (possibly cached) endpoints that should store the given Token. Note that while the endpoints are conceptually a Set (no duplicates will be included), we return a List to avoid an extra allocation when sorting by proximity later

  Parameters:
    `searchPosition` - the position the natural endpoints are requested for
  Returns:
    a copy of the natural endpoints for the given token

### calculateNaturalEndpoints

    public abstract java.util.List<java.net.InetAddress> calculateNaturalEndpoints(Token searchToken,
                                                                                   TokenMetadata tokenMetadata)

  calculate the natural endpoints for the given token

  Parameters:
    `searchToken` - the token the natural endpoints are requested for
  Returns:
    a copy of the natural endpoints for the given token
  See Also:
    `getNaturalEndpoints(org.apache.cassandra.dht.RingPosition)`

### getWriteResponseHandler

    public IWriteResponseHandler getWriteResponseHandler(java.util.Collection<java.net.InetAddress> writeEndpoints,
                                                         ConsistencyLevel consistency_level,
                                                         java.lang.Runnable callback)

### getReplicationFactor

    public abstract int getReplicationFactor()

  calculate the RF based on strategy_options. When overwriting, ensure that this get() is FAST, as this is called often.

  Returns:
    the replication factor

### getAddressRanges

    public com.google.common.collect.Multimap<java.net.InetAddress,Range<Token>> getAddressRanges(TokenMetadata metadata)

### getRangeAddresses

    public com.google.common.collect.Multimap<Range<Token>,java.net.InetAddress> getRangeAddresses(TokenMetadata metadata)

### getAddressRanges

    public com.google.common.collect.Multimap<java.net.InetAddress,Range<Token>> getAddressRanges()

### getPendingAddressRanges

    public java.util.Collection<Range<Token>> getPendingAddressRanges(TokenMetadata metadata,
                                                                      Token pendingToken,
                                                                      java.net.InetAddress pendingAddress)

### invalidateCachedTokenEndpointValues

    public void invalidateCachedTokenEndpointValues()

### validateOptions

    public abstract void validateOptions()
                                  throws ConfigurationException

  Throws:
    `ConfigurationException`

### createReplicationStrategy

    public static AbstractReplicationStrategy createReplicationStrategy(java.lang.String table,
                                                                        java.lang.Class<? extends AbstractReplicationStrategy> strategyClass,
                                                                        TokenMetadata tokenMetadata,
                                                                        IEndpointSnitch snitch,
                                                                        java.util.Map<java.lang.String,java.lang.String> strategyOptions)
                                                                 throws ConfigurationException

  Throws:
    `ConfigurationException`

### createReplicationStrategy

    public static AbstractReplicationStrategy createReplicationStrategy(java.lang.String table,
                                                                        java.lang.String strategyClassName,
                                                                        TokenMetadata tokenMetadata,
                                                                        IEndpointSnitch snitch,
                                                                        java.util.Map<java.lang.String,java.lang.String> strategyOptions)
                                                                 throws ConfigurationException

  Throws:
    `ConfigurationException`

### getClass

    public static java.lang.Class<AbstractReplicationStrategy> getClass(java.lang.String cls)
                                                                 throws ConfigurationException

  Throws:
    `ConfigurationException`

### validateReplicationFactor

    protected void validateReplicationFactor(java.lang.String rf)
                                      throws ConfigurationException

  Throws:
    `ConfigurationException`

### warnOnUnexpectedOptions

    protected void warnOnUnexpectedOptions(java.util.Collection<java.lang.String> expectedOptions)

Copyright © 2013 The Apache Software Foundation