Class 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 cache
      void dropCaches​(int segment)
      Drop cache entry with specified segment id
      void 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 engine
      byte[] 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 cache
      long putObject​(ByteBuffer value, int segment)
      Put object (value) into cache
      byte[] removeObject​(long cLink, int segment)
      Removes object from cache.
      void sync()
      Sync all write node cache entry and sync
      void sync​(int segmentId)
      Write to disk (and sync) all cache entry (from write node cache) with specified segmentId.
    • Constructor Detail

      • TreeCacheInMemory

        public TreeCacheInMemory​(boolean threadSafe)
    • 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 interface ITreeCache
        Parameters:
        oldPos - old cLink address of BNode or CompactLink.EMPTY_LINK if its first time save to current BNode
        val - BNode to save
        segment - segment id
        valInLeaf - store value in leaf flag
        preallocFreeSpace - 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 interface ITreeCache
        Parameters:
        value - value to store
        segment - 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 interface ITreeCache
        Parameters:
        value - value to store
        segment - 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 interface ITreeCache
        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 interface ITreeCache
        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 interface ITreeCache
        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 interface ITreeCache
        Parameters:
        segment - segment id to drop
      • dropCaches

        public void dropCaches()
        Description copied from interface: ITreeCache
        Drop all cache
        Specified by:
        dropCaches in interface ITreeCache
      • 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 interface ITreeCache
        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 interface ITreeCache
      • 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 interface ITreeCache
        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 interface ITreeCache
      • getEngine

        public Engine getEngine()
        Description copied from interface: ITreeCache
        Get underlying db engine
        Specified by:
        getEngine in interface ITreeCache
        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 interface ITreeCache
        Parameters:
        cLink - link to original element to clone
        Returns:
        link to clone of original element