public abstract class AbstractNearCacheRecordStore<K,V,KS,R extends NearCacheRecord,NCRM extends NearCacheRecordMap<KS,R>> extends Object implements NearCacheRecordStore<K,V>, EvictionListener<KS,R>
Modifier and Type | Field and Description |
---|---|
protected ClassLoader |
classLoader |
protected EvictionChecker |
evictionChecker |
protected EvictionPolicyEvaluator<KS,R> |
evictionPolicyEvaluator |
protected EvictionPolicyType |
evictionPolicyType |
protected EvictionStrategy<KS,R,NCRM> |
evictionStrategy |
protected long |
maxIdleMillis |
protected MaxSizeChecker |
maxSizeChecker |
protected static int |
MILLI_SECONDS_IN_A_SECOND |
protected NearCacheConfig |
nearCacheConfig |
protected NearCacheStatsImpl |
nearCacheStats |
protected NCRM |
records |
protected static int |
REFERENCE_SIZE
If Unsafe is available, Object array index scale (every index represents a reference)
can be assumed as reference size.
|
protected static AtomicLongFieldUpdater<AbstractNearCacheRecordStore> |
RESERVATION_ID |
protected long |
reservationId |
protected IFunction<K,R> |
reserveForUpdate |
protected SerializationService |
serializationService |
protected StaleReadDetector |
staleReadDetector |
protected long |
timeToLiveMillis |
NO_LISTENER
Modifier | Constructor and Description |
---|---|
protected |
AbstractNearCacheRecordStore(NearCacheConfig nearCacheConfig,
NearCacheStatsImpl nearCacheStats,
SerializationService serializationService,
ClassLoader classLoader) |
|
AbstractNearCacheRecordStore(NearCacheConfig nearCacheConfig,
SerializationService serializationService,
ClassLoader classLoader) |
Modifier and Type | Method and Description |
---|---|
protected void |
checkAvailable() |
void |
clear()
Removes all stored values.
|
protected void |
clearRecords() |
protected abstract boolean |
containsRecordKey(K key) |
protected EvictionChecker |
createEvictionChecker(NearCacheConfig nearCacheConfig) |
protected EvictionPolicyEvaluator<KS,R> |
createEvictionPolicyEvaluator(EvictionConfig evictionConfig) |
protected EvictionStrategy<KS,R,NCRM> |
createEvictionStrategy(EvictionConfig evictionConfig) |
protected abstract MaxSizeChecker |
createNearCacheMaxSizeChecker(EvictionConfig evictionConfig,
NearCacheConfig nearCacheConfig) |
protected abstract NCRM |
createNearCacheRecordMap(NearCacheConfig nearCacheConfig) |
protected V |
dataToValue(Data data) |
void |
destroy()
Clears the record store and destroys it.
|
protected void |
destroyStore() |
void |
doEviction()
Does eviction as specified configuration
EvictionConfig
in NearCacheConfig regardless from the max-size policy. |
void |
doEvictionIfRequired()
Does eviction as specified configuration
EvictionConfig
in NearCacheConfig . |
V |
get(K key)
Gets the value associated with the given
key . |
protected abstract long |
getKeyStorageMemoryCost(K key) |
NearCacheStats |
getNearCacheStats()
Get the
NearCacheStats instance to monitor this record store. |
protected abstract R |
getOrCreateToReserve(K key) |
abstract R |
getRecord(K key) |
protected abstract long |
getRecordStorageMemoryCost(R record) |
StaleReadDetector |
getStaleReadDetector() |
protected long |
getTotalStorageMemoryCost(K key,
R record) |
void |
initialize() |
protected boolean |
isAvailable() |
protected boolean |
isEvictionEnabled() |
protected boolean |
isRecordExpired(R record) |
protected long |
nextReservationId() |
void |
onEvict(KS key,
R record,
boolean wasExpired)
Called when an
Evictable entry is evicted. |
protected void |
onExpire(K key,
R record) |
protected void |
onGet(K key,
V value,
R record) |
protected void |
onGetError(K key,
V value,
R record,
Throwable error) |
protected void |
onPut(K key,
V value,
R record,
R oldRecord) |
protected void |
onPutError(K key,
V value,
R record,
R oldRecord,
Throwable error) |
protected void |
onRecordAccess(R record) |
protected void |
onRecordCreate(K key,
R record) |
protected void |
onRemove(K key,
R record,
boolean removed) |
protected void |
onRemoveError(K key,
R record,
boolean removed,
Throwable error) |
void |
put(K key,
V value)
Puts (associates) a value with the given
key . |
protected abstract R |
putRecord(K key,
R record) |
protected abstract V |
recordToValue(R record) |
boolean |
remove(K key)
Removes the value associated with the given
key . |
protected abstract R |
removeRecord(K key) |
void |
setStaleReadDetector(StaleReadDetector staleReadDetector) |
int |
size()
Gets the number of stored records.
|
protected Data |
toData(Object obj) |
protected V |
toValue(Object obj) |
V |
tryPublishReserved(K key,
V value,
long reservationId,
boolean deserialize) |
long |
tryReserveForUpdate(K key) |
protected abstract V |
updateAndGetReserved(K key,
V value,
long reservationId,
boolean deserialize) |
protected abstract void |
updateRecordValue(R record,
V value) |
protected R |
updateReservedRecordInternal(K key,
V value,
R reservedRecord,
long reservationId) |
protected Data |
valueToData(V value) |
protected abstract R |
valueToRecord(V value) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
doExpiration, loadKeys, selectToSave, storeKeys
protected static final AtomicLongFieldUpdater<AbstractNearCacheRecordStore> RESERVATION_ID
protected static final int REFERENCE_SIZE
Otherwise, we assume reference size as integer size that means we assume 32 bit JVM or compressed-references enabled 64 bit JVM by ignoring compressed-references disable mode on 64 bit JVM.
protected static final int MILLI_SECONDS_IN_A_SECOND
protected final long timeToLiveMillis
protected final long maxIdleMillis
protected final NearCacheConfig nearCacheConfig
protected final SerializationService serializationService
protected final ClassLoader classLoader
protected final NearCacheStatsImpl nearCacheStats
protected final IFunction<K,R extends NearCacheRecord> reserveForUpdate
protected MaxSizeChecker maxSizeChecker
protected EvictionPolicyEvaluator<KS,R extends NearCacheRecord> evictionPolicyEvaluator
protected EvictionChecker evictionChecker
protected EvictionStrategy<KS,R extends NearCacheRecord,NCRM extends NearCacheRecordMap<KS,R>> evictionStrategy
protected EvictionPolicyType evictionPolicyType
protected NCRM extends NearCacheRecordMap<KS,R> records
protected volatile StaleReadDetector staleReadDetector
protected volatile long reservationId
public AbstractNearCacheRecordStore(NearCacheConfig nearCacheConfig, SerializationService serializationService, ClassLoader classLoader)
protected AbstractNearCacheRecordStore(NearCacheConfig nearCacheConfig, NearCacheStatsImpl nearCacheStats, SerializationService serializationService, ClassLoader classLoader)
public void initialize()
initialize
in interface InitializingObject
public void setStaleReadDetector(StaleReadDetector staleReadDetector)
setStaleReadDetector
in interface NearCacheRecordStore<K,V>
StaleReadDetector
public StaleReadDetector getStaleReadDetector()
getStaleReadDetector
in interface NearCacheRecordStore<K,V>
StaleReadDetector
protected abstract MaxSizeChecker createNearCacheMaxSizeChecker(EvictionConfig evictionConfig, NearCacheConfig nearCacheConfig)
protected abstract NCRM createNearCacheRecordMap(NearCacheConfig nearCacheConfig)
protected abstract long getKeyStorageMemoryCost(K key)
protected abstract long getRecordStorageMemoryCost(R record)
protected abstract V updateAndGetReserved(K key, V value, long reservationId, boolean deserialize)
protected abstract boolean containsRecordKey(K key)
protected void checkAvailable()
protected EvictionPolicyEvaluator<KS,R> createEvictionPolicyEvaluator(EvictionConfig evictionConfig)
protected EvictionStrategy<KS,R,NCRM> createEvictionStrategy(EvictionConfig evictionConfig)
protected EvictionChecker createEvictionChecker(NearCacheConfig nearCacheConfig)
protected boolean isAvailable()
protected boolean isRecordExpired(R record)
protected void onRecordAccess(R record)
protected boolean isEvictionEnabled()
public void onEvict(KS key, R record, boolean wasExpired)
EvictionListener
Evictable
entry is evicted.onEvict
in interface EvictionListener<KS,R extends NearCacheRecord>
key
- Accessor of the Evictable
entry that is evicted.record
- Evictable
entry that is evicted.wasExpired
- true
if the entry was evicted due to expiration, false
otherwisepublic V get(K key)
NearCacheRecordStore
key
.get
in interface NearCacheRecordStore<K,V>
key
- the key from which to get the associated value.key
.public void put(K key, V value)
NearCacheRecordStore
key
.put
in interface NearCacheRecordStore<K,V>
key
- the key to which the given value will be associated.value
- the value that will be associated with the key.public boolean remove(K key)
NearCacheRecordStore
key
.remove
in interface NearCacheRecordStore<K,V>
key
- the key from which the value will be removed.true
if the value was removed, otherwise false
.protected void clearRecords()
public void clear()
NearCacheRecordStore
clear
in interface NearCacheRecordStore<K,V>
protected void destroyStore()
public void destroy()
NearCacheRecordStore
destroy
in interface NearCacheRecordStore<K,V>
public int size()
NearCacheRecordStore
size
in interface NearCacheRecordStore<K,V>
public NearCacheStats getNearCacheStats()
NearCacheRecordStore
NearCacheStats
instance to monitor this record store.getNearCacheStats
in interface NearCacheRecordStore<K,V>
NearCacheStats
instance to monitor this record store.public void doEvictionIfRequired()
NearCacheRecordStore
EvictionConfig
in NearCacheConfig
.doEvictionIfRequired
in interface NearCacheRecordStore<K,V>
public void doEviction()
NearCacheRecordStore
EvictionConfig
in NearCacheConfig
regardless from the max-size policy.doEviction
in interface NearCacheRecordStore<K,V>
public long tryReserveForUpdate(K key)
tryReserveForUpdate
in interface NearCacheRecordStore<K,V>
public V tryPublishReserved(K key, V value, long reservationId, boolean deserialize)
tryPublishReserved
in interface NearCacheRecordStore<K,V>
protected R updateReservedRecordInternal(K key, V value, R reservedRecord, long reservationId)
protected long nextReservationId()
Copyright © 2017 Hazelcast, Inc.. All Rights Reserved.