org.jgroups.blocks

## Class ReplCache<K,V>

- java.lang.Object
- - org.jgroups.blocks.ReplCache<K,V>

- All Implemented Interfaces:
    Cache.ChangeListener, MembershipListener

      public class ReplCache<K,V>
      extends java.lang.Object
      implements MembershipListener, Cache.ChangeListener

  Cache which allows for replication factors per data items; the factor determines how many replicas of a key/value we create across the cluster.
  See doc/design/ReplCache.txt for details.
  Author:
    Bela Ban

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static interface` | `ReplCache.ChangeListener`
    `static class` | `ReplCache.ConsistentHashFunction<K>`
    `static interface` | `ReplCache.HashFunction<K>`
    `static interface` | `ReplCache.HashFunctionFactory<K>`
    `static class` | `ReplCache.Value<V>` Uses arrays to store hash values of addresses, plus addresses.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected static java.util.Map<java.lang.Short,java.lang.reflect.Method>` | `methods`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ReplCache(java.lang.String props, java.lang.String cluster_name)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `Cache.Value<ReplCache.Value<V>>` | `_get(K key)`
    `V` | `_put(K key, V val, short repl_count, long timeout)`
    `V` | `_put(K key, V val, short repl_count, long timeout, boolean force)`
    `V` | `_remove(K key)`
    `void` | `_removeMany(java.util.Set<K> keys)`
    `void` | `addChangeListener(ReplCache.ChangeListener l)`
    `void` | `addMembershipListener(MembershipListener l)`
    `void` | `block()` Called (usually by the FLUSH protocol), as an indication that the member should stop sending messages.
    `void` | `changed()`
    `void` | `clear()` Removes all keys and values in the L2 and L1 caches
    `java.lang.String` | `dump()`
    `V` | `get(K key)` Returns the value associated with key
    `long` | `getCachingTime()`
    `long` | `getCallTimeout()`
    `java.lang.String` | `getClusterName()`
    `int` | `getClusterSize()`
    `short` | `getDefaultReplicationCount()`
    `ReplCache.HashFunction` | `getHashFunction()`
    `ReplCache.HashFunctionFactory` | `getHashFunctionFactory()`
    `Cache<K,V>` | `getL1Cache()`
    `Cache<K,ReplCache.Value<V>>` | `getL2Cache()`
    `Address` | `getLocalAddress()`
    `java.lang.String` | `getLocalAddressAsString()`
    `java.lang.String` | `getProps()`
    `java.lang.String` | `getView()`
    `boolean` | `isL1CacheEnabled()`
    `boolean` | `isMigrateData()`
    `void` | `mcastEntries()`
    `void` | `put(K key, V val)`
    `void` | `put(K key, V val, short repl_count, long timeout)` Places a key/value pair into one or several nodes in the cluster.
    `void` | `put(K key, V val, short repl_count, long timeout, boolean synchronous)` Places a key/value pair into one or several nodes in the cluster.
    `void` | `remove(K key)` Removes key in all nodes in the cluster, both from their local hashmaps and L1 caches
    `void` | `remove(K key, boolean synchronous)` Removes key in all nodes in the cluster, both from their local hashmaps and L1 caches
    `void` | `removeChangeListener(ReplCache.ChangeListener l)`
    `void` | `removeMembershipListener(MembershipListener l)`
    `void` | `setCachingTime(long caching_time)`
    `void` | `setCallTimeout(long call_timeout)`
    `void` | `setClusterName(java.lang.String cluster_name)`
    `void` | `setDefaultReplicationCount(short default_replication_count)`
    `void` | `setHashFunction(ReplCache.HashFunction<K> hash_function)`
    `void` | `setHashFunctionFactory(ReplCache.HashFunctionFactory<K> hash_function_factory)`
    `void` | `setL1Cache(Cache<K,V> cache)`
    `void` | `setL2Cache(Cache<K,ReplCache.Value<V>> cache)`
    `void` | `setMigrateData(boolean migrate_data)`
    `void` | `setProps(java.lang.String props)`
    `void` | `start()`
    `void` | `stop()`
    `void` | `suspect(Address suspected_mbr)` Called whenever a member is suspected of having crashed, but has not yet been excluded.
    `java.lang.String` | `toString()`
    `void` | `viewAccepted(View new_view)` Called when a change in membership has occurred.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### methods

          protected static java.util.Map<java.lang.Short,java.lang.reflect.Method> methods

  - ### Constructor Detail

    - #### ReplCache

          public ReplCache(java.lang.String props,
                   java.lang.String cluster_name)

  - ### Method Detail

    - #### getProps

          public java.lang.String getProps()

    - #### setProps

          public void setProps(java.lang.String props)

    - #### getLocalAddress

          public Address getLocalAddress()

    - #### getLocalAddressAsString

          public java.lang.String getLocalAddressAsString()

    - #### getView

          public java.lang.String getView()

    - #### getClusterSize

          public int getClusterSize()

    - #### isL1CacheEnabled

          public boolean isL1CacheEnabled()

    - #### getClusterName

          public java.lang.String getClusterName()

    - #### setClusterName

          public void setClusterName(java.lang.String cluster_name)

    - #### getCallTimeout

          public long getCallTimeout()

    - #### setCallTimeout

          public void setCallTimeout(long call_timeout)

    - #### getCachingTime

          public long getCachingTime()

    - #### setCachingTime

          public void setCachingTime(long caching_time)

    - #### isMigrateData

          public boolean isMigrateData()

    - #### setMigrateData

          public void setMigrateData(boolean migrate_data)

    - #### getDefaultReplicationCount

          public short getDefaultReplicationCount()

    - #### setDefaultReplicationCount

          public void setDefaultReplicationCount(short default_replication_count)

    - #### getHashFunction

          public ReplCache.HashFunction getHashFunction()

    - #### setHashFunction

          public void setHashFunction(ReplCache.HashFunction<K> hash_function)

    - #### getHashFunctionFactory

          public ReplCache.HashFunctionFactory getHashFunctionFactory()

    - #### setHashFunctionFactory

          public void setHashFunctionFactory(ReplCache.HashFunctionFactory<K> hash_function_factory)

    - #### addMembershipListener

          public void addMembershipListener(MembershipListener l)

    - #### removeMembershipListener

          public void removeMembershipListener(MembershipListener l)

    - #### addChangeListener

          public void addChangeListener(ReplCache.ChangeListener l)

    - #### removeChangeListener

          public void removeChangeListener(ReplCache.ChangeListener l)

    - #### getL1Cache

          public Cache<K,V> getL1Cache()

    - #### setL1Cache

          public void setL1Cache(Cache<K,V> cache)

    - #### getL2Cache

          public Cache<K,ReplCache.Value<V>> getL2Cache()

    - #### setL2Cache

          public void setL2Cache(Cache<K,ReplCache.Value<V>> cache)

    - #### start

          public void start()
                     throws java.lang.Exception

      Throws:
        `java.lang.Exception`

    - #### stop

          public void stop()

    - #### put

          public void put(K key,
                 V val,
                 short repl_count,
                 long timeout,
                 boolean synchronous)

      Places a key/value pair into one or several nodes in the cluster.
      Parameters:
        `key` - The key, needs to be serializable
        `val` - The value, needs to be serializable
        `repl_count` - Number of replicas. The total number of times a data item should be present in a cluster. Needs to be > 0
        - -1: create key/val in all the nodes in the cluster
        - 1: create key/val only in one node in the cluster, picked by computing the consistent hash of KEY
        - K > 1: create key/val in those nodes in the cluster which match the consistent hashes created for KEY
        `timeout` - Expiration time for key/value.
        - -1: don't cache at all in the L1 cache
        - 0: cache forever, until removed or evicted because we need space for newer elements
        - > 0: number of milliseconds to keep an idle element in the cache. An element is idle when not accessed.
        `synchronous` - Whether or not to block until all cluster nodes have applied the change

    - #### put

          public void put(K key,
                 V val,
                 short repl_count,
                 long timeout)

      Places a key/value pair into one or several nodes in the cluster.
      Parameters:
        `key` - The key, needs to be serializable
        `val` - The value, needs to be serializable
        `repl_count` - Number of replicas. The total number of times a data item should be present in a cluster. Needs to be > 0
        - -1: create key/val in all the nodes in the cluster
        - 1: create key/val only in one node in the cluster, picked by computing the consistent hash of KEY
        - K > 1: create key/val in those nodes in the cluster which match the consistent hashes created for KEY
        `timeout` - Expiration time for key/value.
        - -1: don't cache at all in the L1 cache
        - 0: cache forever, until removed or evicted because we need space for newer elements
        - > 0: number of milliseconds to keep an idle element in the cache. An element is idle when not accessed.

    - #### put

          public void put(K key,
                 V val)

    - #### get

          public V get(K key)

      Returns the value associated with key
      Parameters:
        `key` - The key, has to be serializable
      Returns:
        The value associated with key, or null

    - #### remove

          public void remove(K key)

      Removes key in all nodes in the cluster, both from their local hashmaps and L1 caches
      Parameters:
        `key` - The key, needs to be serializable

    - #### remove

          public void remove(K key,
                    boolean synchronous)

      Removes key in all nodes in the cluster, both from their local hashmaps and L1 caches
      Parameters:
        `key` - The key, needs to be serializable

    - #### clear

          public void clear()

      Removes all keys and values in the L2 and L1 caches

    - #### _put

          public V _put(K key,
               V val,
               short repl_count,
               long timeout)

    - #### _put

          public V _put(K key,
               V val,
               short repl_count,
               long timeout,
               boolean force)

      Parameters:
        `key` -
        `val` -
        `repl_count` -
        `timeout` -
        `force` - Skips acceptance checking and simply adds the key/value
      Returns:

    - #### _get

          public Cache.Value<ReplCache.Value<V>> _get(K key)

    - #### _remove

          public V _remove(K key)

    - #### _removeMany

          public void _removeMany(java.util.Set<K> keys)

    - #### viewAccepted

          public void viewAccepted(View new_view)

      Description copied from interface: `MembershipListener`
      Called when a change in membership has occurred. No long running actions or sending of messages should be done in this callback. If some long running action needs to be performed, it should be done in a separate thread.

      Note that on reception of the first view (a new member just joined), the channel will not yet be in the connected state. This only happens when `Channel.connect(String)` returns.
      Specified by:
        `viewAccepted` in interface `MembershipListener`

    - #### suspect

          public void suspect(Address suspected_mbr)

      Description copied from interface: `MembershipListener`
      Called whenever a member is suspected of having crashed, but has not yet been excluded.
      Specified by:
        `suspect` in interface `MembershipListener`

    - #### block

          public void block()

      Description copied from interface: `MembershipListener`
      Called (usually by the FLUSH protocol), as an indication that the member should stop sending messages. Any messages sent after returning from this callback might get blocked by the FLUSH protocol. When the FLUSH protocol is done, and messages can be sent again, the FLUSH protocol will simply unblock all pending messages. If a callback for unblocking is desired, implement `ExtendedMembershipListener.unblock()`. Note that block() is the equivalent of reception of a BlockEvent in the pull mode.
      Specified by:
        `block` in interface `MembershipListener`

    - #### changed

          public void changed()

      Specified by:
        `changed` in interface `Cache.ChangeListener`

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`

    - #### dump

          public java.lang.String dump()

    - #### mcastEntries

          public void mcastEntries()

Copyright © 1998-2009 Bela Ban / Red Hat. All Rights Reserved.