Package com._1c.g5.v8.xmdb.impl
Class TreeCacheInMemory
- java.lang.Object
-
- com._1c.g5.v8.xmdb.impl.TreeCacheInMemory
-
- All Implemented Interfaces:
ITreeCache
public class TreeCacheInMemory extends Object implements ITreeCache
In memory cache implementation
-
-
Constructor Summary
Constructors Constructor Description TreeCacheInMemory(boolean threadSafe)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description long
clone(long cLink)
Clone element by cLink (new element should not be cached by default).void
dropCaches()
Drop all cachevoid
dropCaches(int segment)
Drop cache entry with specified segment idvoid
evict()
Evict (usually - write to disk, but not sync) all cache entry (from write node cache).void
evict(int segmentId)
Evict (usually - write to disk, but no sync) all cache entry (from write node cache) with specified segmentId.BNode
get(long cLink, boolean storeValuesInLeaf, int t, int segment)
Read BNode from cache.Engine
getEngine()
Get underlying db enginebyte[]
getObject(long cLink, int segment)
Read object from cache.long
put(long oldPos, BNode val, int segment, boolean valInLeaf, int preallocFreeSpace)
Put (insert or update) BNode into cache.long
putObject(byte[] value, int segment)
Put object (value) into cachelong
putObject(ByteBuffer value, int segment)
Put object (value) into cachebyte[]
removeObject(long cLink, int segment)
Removes object from cache.void
sync()
Sync all write node cache entry and syncvoid
sync(int segmentId)
Write to disk (and sync) all cache entry (from write node cache) with specified segmentId.
-
-
-
Method Detail
-
put
public long put(long oldPos, BNode val, int segment, boolean valInLeaf, int preallocFreeSpace)
Description copied from interface:ITreeCache
Put (insert or update) BNode into cache. Cache return new adress of BNode (can be the same if BNode fit into allocated block)- Specified by:
put
in interfaceITreeCache
- Parameters:
oldPos
- old cLink address of BNode or CompactLink.EMPTY_LINK if its first time save to current BNodeval
- BNode to savesegment
- segment idvalInLeaf
- store value in leaf flagpreallocFreeSpace
- default prealloc space for current BTree- Returns:
- actual cLink to stored BNode
-
putObject
public long putObject(ByteBuffer value, int segment)
Description copied from interface:ITreeCache
Put object (value) into cache- Specified by:
putObject
in interfaceITreeCache
- Parameters:
value
- value to storesegment
- segment id- Returns:
- actual cLink to stored object
-
putObject
public long putObject(byte[] value, int segment)
Description copied from interface:ITreeCache
Put object (value) into cache- Specified by:
putObject
in interfaceITreeCache
- Parameters:
value
- value to storesegment
- segment id- Returns:
- actual cLink to stored object
-
get
public BNode get(long cLink, boolean storeValuesInLeaf, int t, int segment)
Description copied from interface:ITreeCache
Read BNode from cache. If BNode won't be found in read/write node caches - it will be load from disk into read cache before return- Specified by:
get
in interfaceITreeCache
- Parameters:
cLink
- BNode address (cLink)storeValuesInLeaf
- value in leaf flag (for deserialization, if node on disk)t
- node width, t (for deserialization, if node on disk)segment
- segment id- Returns:
- readed BNode
-
getObject
public byte[] getObject(long cLink, int segment)
Description copied from interface:ITreeCache
Read object from cache. If object won't be found in object cache - it will be load from disk into object cache before return- Specified by:
getObject
in interfaceITreeCache
- Parameters:
cLink
- object address (cLink)segment
- segmentId- Returns:
- readed object
-
removeObject
public byte[] removeObject(long cLink, int segment)
Description copied from interface:ITreeCache
Removes object from cache.- Specified by:
removeObject
in interfaceITreeCache
- Parameters:
cLink
- object address (cLink)segment
- segmentId- Returns:
- removed object
-
dropCaches
public void dropCaches(int segment)
Description copied from interface:ITreeCache
Drop cache entry with specified segment id- Specified by:
dropCaches
in interfaceITreeCache
- Parameters:
segment
- segment id to drop
-
dropCaches
public void dropCaches()
Description copied from interface:ITreeCache
Drop all cache- Specified by:
dropCaches
in interfaceITreeCache
-
sync
public void sync(int segmentId)
Description copied from interface:ITreeCache
Write to disk (and sync) all cache entry (from write node cache) with specified segmentId. Writed segments will be moved to read cache.- Specified by:
sync
in interfaceITreeCache
- Parameters:
segmentId
- segment to write
-
sync
public void sync()
Description copied from interface:ITreeCache
Sync all write node cache entry and sync- Specified by:
sync
in interfaceITreeCache
-
evict
public void evict(int segmentId)
Description copied from interface:ITreeCache
Evict (usually - write to disk, but no sync) all cache entry (from write node cache) with specified segmentId. Writed segments will be removed from cache. Remove all cache entry with specified segmentId from read/object caches.- Specified by:
evict
in interfaceITreeCache
- Parameters:
segmentId
- segment to evict
-
evict
public void evict()
Description copied from interface:ITreeCache
Evict (usually - write to disk, but not sync) all cache entry (from write node cache). Remove all cache entry from read/object caches.- Specified by:
evict
in interfaceITreeCache
-
getEngine
public Engine getEngine()
Description copied from interface:ITreeCache
Get underlying db engine- Specified by:
getEngine
in interfaceITreeCache
- Returns:
- engine
-
clone
public long clone(long cLink)
Description copied from interface:ITreeCache
Clone element by cLink (new element should not be cached by default). Not for value body objects.- Specified by:
clone
in interfaceITreeCache
- Parameters:
cLink
- link to original element to clone- Returns:
- link to clone of original element
-
-