Class SegmentTarWriter

java.lang.Object
org.apache.jackrabbit.oak.segment.file.tar.SegmentTarWriter
All Implemented Interfaces:
SegmentArchiveWriter

public class SegmentTarWriter extends Object implements SegmentArchiveWriter
  • Constructor Summary

    Constructors
    Constructor
    Description
    SegmentTarWriter(File file, FileStoreMonitor monitor, IOMonitor ioMonitor)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Close the archive.
    boolean
    containsSegment(long msb, long lsb)
    Check if the segment exists.
    void
    Flush all the data to the storage.
    int
    Get the number of entries currently contained in the archive.
    long
    Get the current length of the archive.
    int
    This method returns the maximum number of segments that can be supported by the underlying persistence implementation of the archive writer.
    Get the name of the archive.
    boolean
    Check if the archive has been created (eg.
    boolean
    This method returns true if the storage is accessed via a network protocol, not tied to the traditional storage technology, for example, HTTP.
    readSegment(long msb, long lsb)
    Read the segment.
    void
    writeBinaryReferences(byte[] data)
    Write the binary references data.
    void
    writeGraph(byte[] data)
    Write the graph data.
    void
    writeSegment(long msb, long lsb, byte[] data, int offset, int size, int generation, int fullGeneration, boolean compacted)
    Write the new segment to the archive.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

  • Method Details

    • writeSegment

      public void writeSegment(long msb, long lsb, byte[] data, int offset, int size, int generation, int fullGeneration, boolean compacted) throws IOException
      Description copied from interface: SegmentArchiveWriter
      Write the new segment to the archive.
      Specified by:
      writeSegment 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
      data - the data.
      offset - the start offset in the data.
      size - the number of bytes to write.
      generation - the segment generation, see SegmentArchiveEntry.getGeneration()
      fullGeneration - the segment full generation, see SegmentArchiveEntry.getFullGeneration()
      compacted - the segment compaction property, see SegmentArchiveEntry.isCompacted()
      Throws:
      IOException - error writing segment
    • 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
    • writeGraph

      public void writeGraph(byte[] data) throws IOException
      Description copied from interface: SegmentArchiveWriter
      Write the graph data.
      Specified by:
      writeGraph in interface SegmentArchiveWriter
      Parameters:
      data - serialized segment graph data
      Throws:
      IOException
    • writeBinaryReferences

      public void writeBinaryReferences(byte[] data) throws IOException
      Description copied from interface: SegmentArchiveWriter
      Write the binary references data.
      Specified by:
      writeBinaryReferences in interface SegmentArchiveWriter
      Parameters:
      data - serialized binary references data
      Throws:
      IOException
    • getLength

      public long getLength()
      Description copied from interface: SegmentArchiveWriter
      Get the current length of the archive.
      Specified by:
      getLength in interface SegmentArchiveWriter
      Returns:
      length of the archive, in bytes
    • getEntryCount

      public int getEntryCount()
      Description copied from interface: SegmentArchiveWriter
      Get the number of entries currently contained in the archive.
      Specified by:
      getEntryCount in interface SegmentArchiveWriter
      Returns:
      number of entries
    • close

      public void close() throws IOException
      Description copied from interface: SegmentArchiveWriter
      Close the archive.
      Specified by:
      close in interface SegmentArchiveWriter
      Throws:
      IOException
    • 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
    • flush

      public void flush() throws IOException
      Description copied from interface: SegmentArchiveWriter
      Flush all the data to the storage. After returning from this method successfully, all the segments written with the SegmentArchiveWriter.writeSegment(long, long, byte[], int, int, int, int, boolean) should be actually saved to the storage.
      Specified by:
      flush in interface SegmentArchiveWriter
      Throws:
      IOException
    • getName

      public String getName()
      Description copied from interface: SegmentArchiveWriter
      Get the name of the archive.
      Specified by:
      getName in interface SegmentArchiveWriter
      Returns:
      archive name
    • isRemote

      public boolean isRemote()
      Description copied from interface: SegmentArchiveWriter
      This method returns true if the storage is accessed via a network protocol, not tied 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:
      true if the storage is accessed via a network protocol, false otherwise
    • getMaxEntryCount

      public int getMaxEntryCount()
      Description copied from interface: SegmentArchiveWriter
      This method returns the maximum number of segments that can be supported by the underlying persistence implementation of the archive writer.
      Specified by:
      getMaxEntryCount in interface SegmentArchiveWriter
      Returns:
      maximum number of segments supported by the writer implementation