org.infinispan.atomic
Class AtomicHashMapProxy<K,V>

java.lang.Object
  extended by org.infinispan.batch.AutoBatchSupport
      extended by org.infinispan.atomic.AtomicHashMapProxy<K,V>
Type Parameters:
K - the type of keys maintained by this map
V - the type of mapped values
All Implemented Interfaces:
Map<K,V>, AtomicMap<K,V>
Direct Known Subclasses:
FineGrainedAtomicHashMapProxy

public class AtomicHashMapProxy<K,V>
extends AutoBatchSupport
implements AtomicMap<K,V>

A layer of indirection around an AtomicHashMap to provide consistency and isolation for concurrent readers while writes may also be going on. The techniques used in this implementation are very similar to the lock-free reader MVCC model used in the MVCCEntry implementations for the core data container, which closely follow software transactional memory approaches to dealing with concurrency.

Implementations of this class are rarely created on their own; AtomicHashMap.getProxy(org.infinispan.AdvancedCache, Object, boolean, org.infinispan.context.FlagContainer)} should be used to retrieve an instance of this proxy.

Typically proxies are only created by the AtomicMapLookup helper, and would not be created by end-user code directly.

Since:
4.0
Author:
Manik Surtani
See Also:
AtomicHashMap

Nested Class Summary
 
Nested classes/interfaces inherited from interface java.util.Map
Map.Entry<K,V>
 
Field Summary
protected  AdvancedCache<Object,AtomicMap<K,V>> cache
           
protected  AdvancedCache<Object,AtomicMap<K,V>> cacheForWriting
           
protected  Object deltaMapKey
           
protected  FlagContainer flagContainer
           
protected  boolean startedReadingMap
           
protected  TransactionManager transactionManager
           
protected  TransactionTable transactionTable
           
 
Fields inherited from class org.infinispan.batch.AutoBatchSupport
batchContainer
 
Method Summary
protected  void assertValid(AtomicHashMap<?,?> map)
           
 void clear()
           
 boolean containsKey(Object key)
           
 boolean containsValue(Object value)
           
 Set<Map.Entry<K,V>> entrySet()
           
 V get(Object key)
           
protected  AtomicHashMap<K,V> getDeltaMapForRead()
           
protected  AtomicHashMap<K,V> getDeltaMapForWrite()
           
 boolean isEmpty()
           
 Set<K> keySet()
           
protected  CacheEntry lookupEntryFromCurrentTransaction()
          Looks up the CacheEntry stored in transactional context corresponding to this AtomicMap.
 V put(K key, V value)
           
 void putAll(Map<? extends K,? extends V> m)
           
 V remove(Object key)
           
 int size()
           
protected  AtomicHashMap<K,V> toMap(Object object)
           
 String toString()
           
 Collection<V> values()
           
 
Methods inherited from class org.infinispan.batch.AutoBatchSupport
assertBatchingSupported, endAtomic, startAtomic
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.Map
equals, hashCode
 

Field Detail

deltaMapKey

protected final Object deltaMapKey

cache

protected final AdvancedCache<Object,AtomicMap<K,V>> cache

cacheForWriting

protected final AdvancedCache<Object,AtomicMap<K,V>> cacheForWriting

startedReadingMap

protected volatile boolean startedReadingMap

flagContainer

protected final FlagContainer flagContainer

transactionTable

protected TransactionTable transactionTable

transactionManager

protected TransactionManager transactionManager
Method Detail

toMap

protected AtomicHashMap<K,V> toMap(Object object)

getDeltaMapForRead

protected AtomicHashMap<K,V> getDeltaMapForRead()

lookupEntryFromCurrentTransaction

protected CacheEntry lookupEntryFromCurrentTransaction()
Looks up the CacheEntry stored in transactional context corresponding to this AtomicMap. If this AtomicMap has yet to be touched by the current transaction, this method will return a null.

Returns:

getDeltaMapForWrite

protected AtomicHashMap<K,V> getDeltaMapForWrite()

assertValid

protected void assertValid(AtomicHashMap<?,?> map)

keySet

public Set<K> keySet()
Specified by:
keySet in interface Map<K,V>

values

public Collection<V> values()
Specified by:
values in interface Map<K,V>

entrySet

public Set<Map.Entry<K,V>> entrySet()
Specified by:
entrySet in interface Map<K,V>

size

public int size()
Specified by:
size in interface Map<K,V>

isEmpty

public boolean isEmpty()
Specified by:
isEmpty in interface Map<K,V>

containsKey

public boolean containsKey(Object key)
Specified by:
containsKey in interface Map<K,V>

containsValue

public boolean containsValue(Object value)
Specified by:
containsValue in interface Map<K,V>

get

public V get(Object key)
Specified by:
get in interface Map<K,V>

put

public V put(K key,
             V value)
Specified by:
put in interface Map<K,V>

remove

public V remove(Object key)
Specified by:
remove in interface Map<K,V>

putAll

public void putAll(Map<? extends K,? extends V> m)
Specified by:
putAll in interface Map<K,V>

clear

public void clear()
Specified by:
clear in interface Map<K,V>

toString

public String toString()
Overrides:
toString in class Object

-->

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