backtype.storm.utils
Class RotatingMap<K,V>

java.lang.Object
  extended by backtype.storm.utils.RotatingMap<K,V>

public class RotatingMap<K,V>
extends java.lang.Object

Expires keys that have not been updated in the configured number of seconds. The algorithm used will take between expirationSecs and expirationSecs * (1 + 1 / (numBuckets-1)) to actually expire the message. get, put, remove, containsKey, and size take O(numBuckets) time to run. The advantage of this design is that the expiration thread only locks the object for O(1) time, meaning the object is essentially always available for gets/puts.


Nested Class Summary
static interface RotatingMap.ExpiredCallback<K,V>
           
 
Constructor Summary
RotatingMap(int numBuckets)
           
RotatingMap(int numBuckets, RotatingMap.ExpiredCallback<K,V> callback)
           
RotatingMap(RotatingMap.ExpiredCallback<K,V> callback)
           
 
Method Summary
 boolean containsKey(K key)
           
 V get(K key)
           
 void put(K key, V value)
           
 java.lang.Object remove(K key)
           
 java.util.Map<K,V> rotate()
           
 int size()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RotatingMap

public RotatingMap(int numBuckets,
                   RotatingMap.ExpiredCallback<K,V> callback)

RotatingMap

public RotatingMap(RotatingMap.ExpiredCallback<K,V> callback)

RotatingMap

public RotatingMap(int numBuckets)
Method Detail

rotate

public java.util.Map<K,V> rotate()

containsKey

public boolean containsKey(K key)

get

public V get(K key)

put

public void put(K key,
                V value)

remove

public java.lang.Object remove(K key)

size

public int size()