Class Engine

    • Field Detail

      • vol

        protected volatile Volume vol
      • closed

        protected volatile boolean closed
      • structuralLock

        protected final ReentrantLock structuralLock
        protects structural layout of records. Memory allocator is single threaded under this lock
      • commitLock

        protected final ReentrantLock commitLock
        protects lifecycle methods such as commit, rollback and close()
    • Constructor Detail

      • Engine

        public Engine​(File file)
        Creates a new instance.
        Parameters:
        file - the file to store data in. May not be null.
      • Engine

        public Engine​(File file,
                      int pageSize)
        Creates a new instance.
        Parameters:
        file - the file to store data in. May not be null.
        pageSize - the size of the page (minimal unit of disk space allocation). Must be greater than 0.
    • Method Detail

      • sync

        protected void sync()
      • get

        public byte[] get​(long compactLink)
        Read record bytes (all) from volume (Include joining long records
        Parameters:
        compactLink -
        Returns:
      • get2

        public ByteBuffer get2​(long compactLink)
        Read record bytes (all) from volume (Include joining long records
        Parameters:
        compactLink -
        Returns:
      • getLong

        public long getLong​(long offset)
        Read long from specified offset
        Parameters:
        complexLink -
        Returns:
      • putLong

        public void putLong​(long offset,
                            long value)
      • getInt

        public int getInt​(long offset)
      • putInt

        public void putInt​(long offset,
                           int value)
      • getByte

        public byte getByte​(long offset)
      • putByte

        public void putByte​(long offset,
                            byte value)
      • put

        public long put​(ByteBuffer bb,
                        boolean reserveExtraSpace)
        Puts a sequence of bytes to this engine from the given buffer.
        Parameters:
        bb - the byte buffer, may not be null.
        reserveExtraSpace - the flag showing whether extra space should be reserved for future updates.
        Returns:
        compact link (clink) to the put data.
      • put

        public long put​(byte[] val,
                        boolean reserveExtraSpace)
        Store bytes into volume and return internal link. If data fit's in link (<= 7 bytes) than nothink is writing into volume, just construct appropriate link
        Parameters:
        val - bytes to store
        reserveExtraSpace - the flag showing whether extra space should be reserved for future updates.
        Returns:
        internal ling (not recid!)
      • update

        public long update​(long clink,
                           ByteBuffer newVal,
                           boolean reserveExtraSpace)
        Updates the record identified by the specified compact link (clink).
        Parameters:
        clink - the compact link.
        newVal - the byte buffer containing new value.
        reserveExtraSpace - the flag showing whether extra space should be reserved for future updates.
        Returns:
        compact link (clink) to the updated record (might not be the same as the specified one).
      • update

        public long update​(long clink,
                           byte[] newVal,
                           boolean reserveExtraSpace)
        Updates the record identified by the specified compact link (clink).
        Parameters:
        clink - the compact link.
        newVal - the byte array containing new value.
        reserveExtraSpace - the flag showing whether extra space should be reserved for future updates.
        Returns:
        compact link (clink) to the updated record (might not be the same as the specified one).
      • delete

        public void delete​(long clink)
        Deletes the data pointed by the specified clink.
        Parameters:
        clink - the clink.
      • isClosed

        public boolean isClosed()
      • isReadOnly

        public boolean isReadOnly()
      • commit

        public void commit()
      • rollback

        public void rollback()
      • snapshot

        public void snapshot()
      • compact

        public void compact()
      • getVolume

        public Volume getVolume()
      • clone

        public long clone​(long cLink)
      • renameTo

        public void renameTo​(String newName)
      • detachStorage

        public void detachStorage()
      • attachStorage

        public void attachStorage()
      • drop

        public void drop()