public class CompiledMapIterationContext<K,KI,MKI extends net.openhft.chronicle.hash.serialization.internal.MetaBytesInterop<K,? super KI>,V,VI,MVI extends net.openhft.chronicle.hash.serialization.internal.MetaBytesInterop<V,? super VI>,R> extends net.openhft.chronicle.hash.impl.stage.hash.ChainingInterface implements AutoCloseable, ChecksumEntry, HashEntry<K>, HashSegmentContext<K,MapEntry<K,V>>, SegmentLock, net.openhft.chronicle.hash.impl.stage.entry.Alloc, net.openhft.chronicle.hash.impl.stage.entry.KeyHashCode, net.openhft.chronicle.hash.impl.stage.entry.LocksInterface, MapContext<K,V,R>, MapEntry<K,V>, net.openhft.chronicle.map.impl.IterationContext<K,V,R>, net.openhft.chronicle.map.impl.VanillaChronicleMapHolder<K,KI,MKI,V,VI,MVI,R>
Modifier and Type | Class and Description |
---|---|
class |
CompiledMapIterationContext.EntryKeyBytesData |
class |
CompiledMapIterationContext.EntryValueBytesData |
class |
CompiledMapIterationContext.HashKeyCrc32PayloadChecksumStrategy |
class |
CompiledMapIterationContext.ReadLock |
static class |
CompiledMapIterationContext.SearchState |
class |
CompiledMapIterationContext.UpdateLock |
class |
CompiledMapIterationContext.WrappedValueInstanceData |
class |
CompiledMapIterationContext.WriteLock |
Constructor and Description |
---|
CompiledMapIterationContext(net.openhft.chronicle.hash.impl.stage.hash.ChainingInterface c,
net.openhft.chronicle.map.VanillaChronicleMap<K,KI,MKI,V,VI,MVI,R> m) |
CompiledMapIterationContext(net.openhft.chronicle.map.VanillaChronicleMap<K,KI,MKI,V,VI,MVI,R> m) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
hash
public final int indexInContextChain
public final CompiledMapIterationContext.ReadLock innerReadLock
public static final org.slf4j.Logger LOG
public final CompiledMapIterationContext.WriteLock innerWriteLock
public final CompiledMapIterationContext.UpdateLock innerUpdateLock
public final ThreadLocalCopies copies
public final net.openhft.chronicle.hash.impl.stage.hash.ChainingInterface rootContextInThisThread
public final List<net.openhft.chronicle.hash.impl.stage.hash.ChainingInterface> contextChain
public final CompiledMapIterationContext.EntryValueBytesData entryValue
public final ReusableBitSet freeList
public final PointerBytesStore segmentBS
public final net.openhft.chronicle.hash.impl.PublicMultiStoreBytes segmentBytes
public final VI valueInterop
public final net.openhft.chronicle.hash.impl.stage.entry.ChecksumStrategy checksumStrategy
public final BytesReader<V> valueReader
public final KI keyInterop
public final BytesReader<K> keyReader
public long searchStartPos
public int allocatedChunks
public long keyOffset
public long keySize
public long valueSizeOffset
public long hashLookupEntry
public int segmentIndex
public int latestSameThreadSegmentModCount
public int contextModCount
public boolean nestedContextsLockedOnSameSegment
public net.openhft.chronicle.hash.impl.stage.entry.LocksInterface rootContextLockedOnThisSegment
public int segmentTier
public long tierIndex
public long segmentBaseAddr
public long hashLookupPos
public long valueSize
public long valueOffset
public boolean entryRemovedOnThisIteration
public long pos
public long keySizeOffset
public int entrySizeInChunks
protected CompiledMapIterationContext.SearchState searchState
public CompiledMapIterationContext(net.openhft.chronicle.hash.impl.stage.hash.ChainingInterface c, net.openhft.chronicle.map.VanillaChronicleMap<K,KI,MKI,V,VI,MVI,R> m)
public boolean readZeroGuarded()
public boolean updateZeroGuarded()
public boolean writeZeroGuarded()
public int decrementUpdateGuarded()
public int decrementWriteGuarded()
public String debugContextsAndLocksGuarded()
public void close()
close
in interface Closeable
close
in interface AutoCloseable
public void incrementModCountGuarded()
public void incrementReadGuarded()
public void incrementUpdateGuarded()
public void incrementWriteGuarded()
public void readUnlockAndDecrementCountGuarded()
public void setHashLookupPosGuarded(long hashLookupPos)
public void setLocalLockStateGuarded(net.openhft.chronicle.hash.impl.LocalLockState newState)
public int changeAndGetLatestSameThreadSegmentModCount(int change)
changeAndGetLatestSameThreadSegmentModCount
in interface net.openhft.chronicle.hash.impl.stage.entry.LocksInterface
public int changeAndGetTotalReadLockCount(int change)
changeAndGetTotalReadLockCount
in interface net.openhft.chronicle.hash.impl.stage.entry.LocksInterface
public int changeAndGetTotalUpdateLockCount(int change)
changeAndGetTotalUpdateLockCount
in interface net.openhft.chronicle.hash.impl.stage.entry.LocksInterface
public int changeAndGetTotalWriteLockCount(int change)
changeAndGetTotalWriteLockCount
in interface net.openhft.chronicle.hash.impl.stage.entry.LocksInterface
public int decrementRead()
public int decrementUpdate()
public int decrementWrite()
public void incrementModCount()
public void incrementRead()
public void incrementUpdate()
public void incrementWrite()
public void readUnlockAndDecrementCount()
public void setHashLookupPos(long hashLookupPos)
public void setLocalLockState(net.openhft.chronicle.hash.impl.LocalLockState newState)
public void setNestedContextsLockedOnSameSegment(boolean nestedContextsLockedOnSameSegment)
setNestedContextsLockedOnSameSegment
in interface net.openhft.chronicle.hash.impl.stage.entry.LocksInterface
public void setNextNode(net.openhft.chronicle.hash.impl.stage.entry.LocksInterface nextNode)
setNextNode
in interface net.openhft.chronicle.hash.impl.stage.entry.LocksInterface
public void setSearchState(CompiledMapIterationContext.SearchState newSearchState)
public Thread owner()
public String debugContextsAndLocks()
public boolean readZero()
public boolean updateZero()
public boolean writeZero()
public int indexInContextChain()
public CompiledMapIterationContext.ReadLock innerReadLock()
public CompiledMapIterationContext.WriteLock innerWriteLock()
public org.slf4j.Logger LOG()
public CompiledMapIterationContext.UpdateLock innerUpdateLock()
public CompiledMapIterationContext.EntryKeyBytesData entryKey()
public net.openhft.chronicle.hash.impl.stage.hash.ChainingInterface rootContextInThisThread()
public ThreadLocalCopies copies()
public List<net.openhft.chronicle.hash.impl.stage.hash.ChainingInterface> contextChain()
public CompiledMapIterationContext.EntryValueBytesData entryValue()
public CompiledMapIterationContext.WrappedValueInstanceData wrappedValueInstanceValue()
public CompiledMapIterationContext.HashKeyCrc32PayloadChecksumStrategy hashKeyCrc32PayloadChecksumStrategy()
public VI valueInterop()
public net.openhft.chronicle.hash.impl.stage.entry.ChecksumStrategy checksumStrategy()
public BytesReader<V> valueReader()
public KI keyInterop()
public BytesReader<K> keyReader()
public void closeIterationSegmentStagesDeregisterIterationContextLockedInThisThreadDependants()
public boolean checkSum()
ChecksumEntry
checkSum
in interface ChecksumEntry
true
if stored checksum equals to checksum computed from the entry bytespublic <T> T contextAtIndexInChain(int index)
public void closeVanillaChronicleMapHolderImplContextAtIndexInChainDependants()
public void closeValueBytesInteropValueMetaInteropDependants()
public <T extends net.openhft.chronicle.hash.impl.stage.hash.ChainingInterface> T getContext(Class<? extends T> contextClass, Function<net.openhft.chronicle.hash.impl.stage.hash.ChainingInterface,T> createChaining)
getContext
in class net.openhft.chronicle.hash.impl.stage.hash.ChainingInterface
@NotNull public MapContext<K,V,?> context()
HashEntry
public void checkAccessingFromOwnerThread()
public void closeOwnerThreadHolderCheckAccessingFromOwnerThreadDependants()
public void checkNestedContextsQueryDifferentKeys(net.openhft.chronicle.hash.impl.stage.entry.LocksInterface innermostContextOnThisSegment)
public void closeIterationSegmentStagesCheckNestedContextsQueryDifferentKeysDependants()
public void checkIterationContextNotLockedInThisThread()
public void checkEntryNotRemovedOnThisIteration()
public void closeMapSegmentIterationCheckEntryNotRemovedOnThisIterationDependants()
public void checkOnEachPublicOperation()
public void closeIterationCheckOnEachPublicOperationCheckOnEachPublicOperationDependants()
public Data<V> defaultValue(@NotNull MapAbsentEntry<K,V> absentEntry)
DefaultValueProvider
absentEntry
context. This is primarily used in ChronicleMap.acquireUsing(K, V)
operation implementation, i. e. MapMethods.acquireUsing(net.openhft.chronicle.map.MapQueryContext<K, V, R>, net.openhft.chronicle.map.ReturnValue<V>)
.defaultValue
in interface DefaultValueProvider<K,V>
public R replaceValue(@NotNull MapEntry<K,V> entry, Data<V> newValue)
MapEntryOperations
replaceValue
in interface MapEntryOperations<K,V,R>
entry
- the entry to replace the value in@NotNull public InterProcessLock writeLock()
InterProcessReadWriteUpdateLock
lock()
or other
locking methods (tryLock()
, etc.) on this lock acquires the read and update locks,
as well.
Any attempt to acquire this lock (including tryLock()
, if the read lock is already
held by the current thread, but the update and write locks are not yet, is prevented by
throwing IllegalInterProcessLockStateException
.
writeLock
in interface ReadWriteLock
writeLock
in interface InterProcessReadWriteUpdateLock
public R remove(@NotNull MapEntry<K,V> entry)
MapEntryOperations
remove
in interface MapEntryOperations<K,V,R>
entry
- the entry to remove@NotNull public Data<K> key()
HashEntry
public Data<V> wrapValueAsData(V value)
MapContext
Data
. Useful when you need to pass a value
to some method accepting Data
, for example, MapEntryOperations.replaceValue(
MapEntry, Data)
, without allocating new objects (i. e. garbage) and ThreadLocals
.
The returned Data
object shouldn't outlive this MapContext
.
wrapValueAsData
in interface MapContext<K,V,R>
value
- the value object to wrapData
@NotNull public InterProcessLock readLock()
InterProcessReadWriteUpdateLock
unlock()
on this
lock also releases the update and write locks, if held, as well.readLock
in interface ReadWriteLock
readLock
in interface InterProcessReadWriteUpdateLock
@NotNull public Data<V> value()
MapEntry
@NotNull public InterProcessLock updateLock()
InterProcessReadWriteUpdateLock
lock()
or other
locking methods (tryLock()
, etc.) on this lock acquires the read lock, as well.
Calling unlock()
on this lock also releases the write lock.
Any attempt to acquire this lock (including tryLock()
, if the read lock is already
held by the current thread, but the update lock is not yet, is prevented by throwing IllegalInterProcessLockStateException
.
updateLock
in interface InterProcessReadWriteUpdateLock
public R insert(@NotNull MapAbsentEntry<K,V> absentEntry, Data<V> value)
MapEntryOperations
the key
from
the given insertion context (absentEntry
) and the given value
.insert
in interface MapEntryOperations<K,V,R>
public ChronicleMap<K,V> map()
MapContext
ChronicleMap
. Synonym to MapContext.hash()
.map
in interface net.openhft.chronicle.map.impl.VanillaChronicleMapHolder<K,KI,MKI extends net.openhft.chronicle.hash.serialization.internal.MetaBytesInterop<K,? super KI>,V,VI,MVI extends net.openhft.chronicle.hash.serialization.internal.MetaBytesInterop<V,? super VI>,R>
map
in interface MapContext<K,V,R>
public void incrementSegmentEntriesIfNeeded()
public void closeIterationSegmentStagesRegisterIterationContextLockedInThisThreadDependants()
public net.openhft.chronicle.hash.impl.CompactOffHeapLinearHashTable hl()
public void closeHashLookupSearchHlDependants()
public boolean searchKeyInit()
public void initSearchKey(long searchKey)
public long searchKey()
public long searchStartPos()
public void closeSearchKey()
public void closeSearchKeyDependants()
public long innerEntrySize(long sizeOfEverythingBeforeValue, long valueSize)
public final long entrySize(long keySize, long valueSize)
public boolean entryIsPresent()
public List<net.openhft.chronicle.hash.impl.stage.hash.ChainingInterface> getContextChain()
getContextChain
in class net.openhft.chronicle.hash.impl.stage.hash.ChainingInterface
public void updateChecksum()
ChecksumEntry
MapAbsentEntry.doInsert(Data)
, MapEntry.doReplaceValue(Data)
: it is performed automatically underneath. Call this method,
only when value bytes was updated directly, for example though Chronicle-Value-generated
interface.updateChecksum
in interface ChecksumEntry
public boolean allocatedChunksInit()
public void initAllocatedChunks(int allocatedChunks)
public int allocatedChunks()
public void closeAllocatedChunks()
public boolean keyOffsetInit()
public void initKeyOffset(long keyOffset)
public long keyOffset()
public void closeKeyOffset()
public void closeKeyOffsetDependants()
public boolean keySizeInit()
public void initKeySize(long keySize)
public long keySize()
public void closeKeySize()
public void closeKeySizeDependants()
public long keyEnd()
public void closeMapEntryStagesKeyEndDependants()
public void closeMapEntryStagesCountValueSizeOffsetDependants()
public boolean valueSizeOffsetInit()
public long valueSizeOffset()
public void closeValueSizeOffset()
public void closeValueSizeOffsetDependants()
public boolean hashLookupEntryInit()
public void initHashLookupEntry(long entry)
public long hashLookupEntry()
public boolean segmentIndexInit()
public void initSegmentIndex(int segmentIndex)
public int segmentIndex()
SegmentLock
segmentIndex
in interface SegmentLock
public void closeSegmentIndex()
public void closeSegmentIndexDependants()
public boolean segmentHeaderInit()
segmentHeaderInit
in interface net.openhft.chronicle.hash.impl.stage.entry.LocksInterface
public long segmentHeaderAddress()
segmentHeaderAddress
in interface net.openhft.chronicle.hash.impl.stage.entry.LocksInterface
public net.openhft.chronicle.hash.impl.SegmentHeader segmentHeader()
public void closeSegmentHeader()
public void closeSegmentHeaderDependants()
public long deleted()
public void deleted(long deleted)
public long entries()
public long size()
HashSegmentContext
public void entries(long size)
public boolean locksInit()
locksInit
in interface net.openhft.chronicle.hash.impl.stage.entry.LocksInterface
public boolean nestedContextsLockedOnSameSegment()
public int latestSameThreadSegmentModCount()
latestSameThreadSegmentModCount
in interface net.openhft.chronicle.hash.impl.stage.entry.LocksInterface
public int totalReadLockCount()
totalReadLockCount
in interface net.openhft.chronicle.hash.impl.stage.entry.LocksInterface
public int totalUpdateLockCount()
totalUpdateLockCount
in interface net.openhft.chronicle.hash.impl.stage.entry.LocksInterface
public int totalWriteLockCount()
totalWriteLockCount
in interface net.openhft.chronicle.hash.impl.stage.entry.LocksInterface
public net.openhft.chronicle.hash.impl.LocalLockState localLockState()
public net.openhft.chronicle.hash.impl.stage.entry.LocksInterface nextNode()
nextNode
in interface net.openhft.chronicle.hash.impl.stage.entry.LocksInterface
public net.openhft.chronicle.hash.impl.stage.entry.LocksInterface rootContextLockedOnThisSegment()
rootContextLockedOnThisSegment
in interface net.openhft.chronicle.hash.impl.stage.entry.LocksInterface
public void closeLocksDependants()
public String debugLocksState()
debugLocksState
in interface net.openhft.chronicle.hash.impl.stage.entry.LocksInterface
public boolean segmentTierInit()
public void initSegmentTier()
public void initSegmentTier(int tier, long tierIndex, long tierBaseAddr)
public void initSegmentTier_WithBaseAddr(int tier, long tierBaseAddr, long tierIndex)
public int segmentTier()
public long segmentBaseAddr()
public long tierIndex()
public void closeSegmentTier()
public void closeSegmentTierDependants()
public boolean keyHashInit()
public long keyHash()
public void closeKeyHash()
public long keyHashCode()
keyHashCode
in interface net.openhft.chronicle.hash.impl.stage.entry.KeyHashCode
public boolean hashLookupPosInit()
public void initHashLookupPos()
public void initHashLookupPos(long hashLookupPos)
public long hashLookupPos()
public void closeHashLookupPos()
public void closeHashLookupPosDependants()
public void putValueVolatile(long newValue)
public void found()
public void closeHashLookupSearchFoundDependants()
public long entrySpaceOffset()
public ReusableBitSet freeList()
public PointerBytesStore segmentBS()
public net.openhft.chronicle.hash.impl.PublicMultiStoreBytes segmentBytes()
public void closeSegmentDependants()
public boolean valueSizeInit()
public long valueOffset()
public long valueSize()
public void closeValueSize()
public void closeValueSizeDependants()
protected long entryEnd()
public void closeMapEntryStagesEntryEndDependants()
public void writeValue(Data<?> value)
public void initValue_WithoutSize(Data<?> value, long oldValueSizeOffset, long oldValueSize, long oldValueOffset)
public void initValue(Data<?> value)
public void closeHashLookupSearchAddrDependants()
public long nextPos()
public void closeHashLookupSearchNextPosDependants()
public boolean checkSlotContainsExpectedKeyAndValue(long value)
public void remove()
public long tierCountersAreaAddr()
public long nextPosToSearchFromTiered()
public void nextPosToSearchFromTiered(long nextPosToSearchFrom)
public void nextPosToSearchFrom(long nextPosToSearchFrom)
public void updateNextPosToSearchFrom(long allocated, int chunks)
public long allocReturnCode(int chunks)
public void free(long fromPos, int chunks)
public long prevTierIndex()
public void prevTier()
public void prevTierIndex(long prevTierIndex)
public long nextTierIndex()
public boolean hasNextTier()
public void nextTierIndex(long nextTierIndex)
public void goToFirstTier()
public void nextTier()
public void goToLastTier()
public long alloc(int chunks)
net.openhft.chronicle.hash.impl.stage.entry.Alloc
alloc
in interface net.openhft.chronicle.hash.impl.stage.entry.Alloc
chunks
- chunks to allocatepublic boolean usedInit()
usedInit
in class net.openhft.chronicle.hash.impl.stage.hash.ChainingInterface
public void initUsed(boolean used)
initUsed
in class net.openhft.chronicle.hash.impl.stage.hash.ChainingInterface
protected void initEntryRemovedOnThisIteration(boolean entryRemovedOnThisIteration)
public void closeEntryRemovedOnThisIteration()
public void closeInputKey()
public void closeInputKeyDependants()
public void closeKeySearchKeyEqualsDependants()
public boolean posInit()
public void initPos(long pos)
public long pos()
public void closePos()
public void closePosDependants()
public boolean entryOffsetInit()
public void initEntryOffset()
public long keySizeOffset()
public void closeEntryOffset()
public void closeEntryOffsetDependants()
public void writeNewEntry(long pos, Data<?> key)
public void closeMapEntryStagesEntrySizeDependants()
public boolean entrySizeInChunksInit()
public void initEntrySizeInChunks(int actuallyUsedChunks)
public int entrySizeInChunks()
public void closeEntrySizeInChunks()
public void copyExistingEntry(long newPos, long bytesToCopy, long oldKeyAddr, long oldKeySizeAddr)
public boolean initEntryAndKeyCopying(long entrySize, long bytesToCopy)
public void readExistingEntry(long pos)
public void closeMapEntryStagesReadExistingEntryDependants()
public void initKeySearch()
public CompiledMapIterationContext.SearchState searchState()
public boolean searchStateDeleted()
public boolean searchStatePresent()
public boolean searchStateAbsent()
public void putNewVolatile(long value)
public boolean forEachSegmentEntryWhile(Predicate<? super MapEntry<K,V>> action)
HashSegmentContext
false
for some entry, or throws
an Exception
. Exceptions thrown by the predicate are relayed to the caller.
If this segment is empty (i. e. HashSegmentContext.size()
call returns 0), this method returns
true
immediately.
forEachSegmentEntryWhile
in interface HashSegmentContext<K,MapEntry<K,V>>
action
- the predicate to be checked for each entry in this segmenttrue
if the predicate returned true
for all checked entries,
false
if it returned false
for some entrypublic void forEachSegmentEntry(Consumer<? super MapEntry<K,V>> action)
HashSegmentContext
Exception
. Exceptions thrown by the action are
relayed to the caller.forEachSegmentEntry
in interface HashSegmentContext<K,MapEntry<K,V>>
action
- the action to be performed for each entry in this segmentpublic void innerRemoveEntryExceptHashLookupUpdate()
public void iterationRemove()
public void doRemove()
HashEntry
ChronicleHash
.public final void freeExtraAllocatedChunks()
public void doReplaceValue(Data<V> newValue)
MapEntry
newValue
.
This method is the default implementation for MapEntryOperations.replaceValue(
MapEntry, Data)
, which might be customized over the default.
doReplaceValue
in interface MapEntry<K,V>
newValue
- the value to be put into the map instead of the current
valueCopyright © 2015. All rights reserved.