Class AbstractRemoteSegmentArchiveReader

    • Field Detail

      • ioMonitor

        protected final IOMonitor ioMonitor
      • hasGraph

        protected java.lang.Boolean hasGraph
    • Constructor Detail

      • AbstractRemoteSegmentArchiveReader

        public AbstractRemoteSegmentArchiveReader​(IOMonitor ioMonitor)
                                           throws java.io.IOException
        Throws:
        java.io.IOException
    • Method Detail

      • readSegment

        public Buffer readSegment​(long msb,
                                  long lsb)
                           throws java.io.IOException
        Description copied from interface: SegmentArchiveReader
        Read the segment.
        Specified by:
        readSegment in interface SegmentArchiveReader
        Parameters:
        msb - the most significant bits of the identifier of the segment
        lsb - the least significant bits of the identifier of the segment
        Returns:
        byte buffer containing the segment data or null if the segment doesn't exist
        Throws:
        java.io.IOException
      • containsSegment

        public boolean containsSegment​(long msb,
                                       long lsb)
        Description copied from interface: SegmentArchiveReader
        Check if the segment exists.
        Specified by:
        containsSegment in interface SegmentArchiveReader
        Parameters:
        msb - the most significant bits of the identifier of the segment
        lsb - the least significant bits of the identifier of the segment
        Returns:
        true if the segment exists
      • getGraph

        public Buffer getGraph()
                        throws java.io.IOException
        Description copied from interface: SegmentArchiveReader
        Load the segment graph.
        Specified by:
        getGraph in interface SegmentArchiveReader
        Returns:
        byte buffer representing the graph or null if the graph hasn't been persisted.
        Throws:
        java.io.IOException
      • hasGraph

        public boolean hasGraph()
        Description copied from interface: SegmentArchiveReader
        Check if the segment graph has been persisted for this archive.
        Specified by:
        hasGraph in interface SegmentArchiveReader
        Returns:
        true if the graph exists, false otherwise
      • getBinaryReferences

        public Buffer getBinaryReferences()
                                   throws java.io.IOException
        Description copied from interface: SegmentArchiveReader
        Load binary references.
        Specified by:
        getBinaryReferences in interface SegmentArchiveReader
        Returns:
        byte buffer representing the binary references structure.
        Throws:
        java.io.IOException
      • close

        public void close()
        Description copied from interface: SegmentArchiveReader
        Close the archive.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Specified by:
        close in interface SegmentArchiveReader
      • getEntrySize

        public int getEntrySize​(int size)
        Description copied from interface: SegmentArchiveReader
        Transforms the segment size in bytes into the effective size on disk for the given entry (eg. by adding the number of padding bytes, header, etc.)
        Specified by:
        getEntrySize in interface SegmentArchiveReader
        Parameters:
        size - the segment size in bytes
        Returns:
        the number of bytes effectively used on the storage to save the segment
      • computeArchiveIndexAndLength

        protected abstract long computeArchiveIndexAndLength()
                                                      throws java.io.IOException
        Populates the archive index, summing up each entry's length.
        Returns:
        length, the total length of the archive
        Throws:
        java.io.IOException
      • doReadSegmentToBuffer

        protected abstract void doReadSegmentToBuffer​(java.lang.String segmentFileName,
                                                      Buffer buffer)
                                               throws java.io.IOException
        Reads the segment from the remote storage.
        Parameters:
        segmentFileName - , the name of the segment (msb + lsb) prefixed by its position in the archive
        buffer - , the buffer to which to read
        Throws:
        java.io.IOException
      • doReadDataFile

        protected abstract Buffer doReadDataFile​(java.lang.String extension)
                                          throws java.io.IOException
        Reads a data file inside the archive. This entry is not a segment. Its full name is given by archive name + extension.
        Parameters:
        extension - , extension of the file
        Returns:
        the buffer containing the data file bytes
        Throws:
        java.io.IOException
      • archivePathAsFile

        protected abstract java.io.File archivePathAsFile()
        Returns the decoded file component of this archive.
        Returns:
        the decoded file component of this archive.
      • isRemote

        public boolean isRemote()
        Description copied from interface: SegmentArchiveReader
        This method returns true if the storage is accessed via a network protocol, not tight to the traditional storage technology, for example, HTTP. Based on that info, for instance, calling classes can decide to update archive metadata (graph, binary references, index) more frequently, and not only when the archive is being closed. With that multiple Oak processes can access the storage simultaneously, with one process in read-write mode and one or more processes in read-only mode.
        Specified by:
        isRemote in interface SegmentArchiveReader
        Returns: