Class AbstractRemoteSegmentArchiveWriter

    • Constructor Detail

      • AbstractRemoteSegmentArchiveWriter

        public AbstractRemoteSegmentArchiveWriter​(IOMonitor ioMonitor,
                                                  FileStoreMonitor monitor)
    • Method Detail

      • readSegment

        public Buffer readSegment​(long msb,
                                  long lsb)
                           throws IOException
        Description copied from interface: SegmentArchiveWriter
        Read the segment.
        Specified by:
        readSegment in interface SegmentArchiveWriter
        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 segment doesn't exist
        Throws:
        IOException
      • containsSegment

        public boolean containsSegment​(long msb,
                                       long lsb)
        Description copied from interface: SegmentArchiveWriter
        Check if the segment exists.
        Specified by:
        containsSegment in interface SegmentArchiveWriter
        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
      • isCreated

        public boolean isCreated()
        Description copied from interface: SegmentArchiveWriter
        Check if the archive has been created (eg. something has been written).
        Specified by:
        isCreated in interface SegmentArchiveWriter
        Returns:
        true if the archive has been created, false otherwise
      • isRemote

        public boolean isRemote()
        Description copied from interface: SegmentArchiveWriter
        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 SegmentArchiveWriter
        Returns:
      • doWriteArchiveEntry

        protected abstract void doWriteArchiveEntry​(RemoteSegmentArchiveEntry indexEntry,
                                                    byte[] data,
                                                    int offset,
                                                    int size)
                                             throws IOException
        Writes a segment to the remote storage.
        Parameters:
        indexEntry - , the archive index entry to write
        data - , the actual bytes in the entry
        offset - , the start offset in the data.
        size - , the number of bytes to write.
        Throws:
        IOException
      • doReadArchiveEntry

        protected abstract Buffer doReadArchiveEntry​(RemoteSegmentArchiveEntry indexEntry)
                                              throws IOException
        Reads a segment from remote storage into a buffer.
        Parameters:
        indexEntry - , the archive index entry to read
        Returns:
        th buffer containing the segment bytes
        Throws:
        IOException
      • doWriteDataFile

        protected abstract void doWriteDataFile​(byte[] data,
                                                String extension)
                                         throws IOException
        Writes a data file inside the archive. This entry is not a segment. Its full name is given by archive name + extension.
        Parameters:
        data - , bytes to write
        extension - , the extension of the data file
        Throws:
        IOException
      • afterQueueClosed

        protected abstract void afterQueueClosed()
                                          throws IOException
        Hook for executing additional actions after the segment write queue is closed.
        Throws:
        IOException
      • afterQueueFlushed

        protected abstract void afterQueueFlushed()
                                           throws IOException
        Hook for executing additional actions after the segment write queue is flushed.
        Throws:
        IOException