Class SegmentTarWriter
java.lang.Object
org.apache.jackrabbit.oak.segment.file.tar.SegmentTarWriter
- All Implemented Interfaces:
SegmentArchiveWriter
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
Close the archive.boolean
containsSegment
(long msb, long lsb) Check if the segment exists.void
flush()
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.getName()
Get the name of the archive.boolean
Check if the archive has been created (eg.boolean
isRemote()
This method returnstrue
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.
-
Constructor Details
-
SegmentTarWriter
-
-
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 interfaceSegmentArchiveWriter
- Parameters:
msb
- the most significant bits of the identifier of the segmentlsb
- the least significant bits of the identifier of the segmentdata
- the data.offset
- the start offset in the data.size
- the number of bytes to write.generation
- the segment generation, seeSegmentArchiveEntry.getGeneration()
fullGeneration
- the segment full generation, seeSegmentArchiveEntry.getFullGeneration()
compacted
- the segment compaction property, seeSegmentArchiveEntry.isCompacted()
- Throws:
IOException
- error writing segment
-
readSegment
Description copied from interface:SegmentArchiveWriter
Read the segment.- Specified by:
readSegment
in interfaceSegmentArchiveWriter
- Parameters:
msb
- the most significant bits of the identifier of the segmentlsb
- 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 interfaceSegmentArchiveWriter
- Parameters:
msb
- the most significant bits of the identifier of the segmentlsb
- the least significant bits of the identifier of the segment- Returns:
- true if the segment exists
-
writeGraph
Description copied from interface:SegmentArchiveWriter
Write the graph data.- Specified by:
writeGraph
in interfaceSegmentArchiveWriter
- Parameters:
data
- serialized segment graph data- Throws:
IOException
-
writeBinaryReferences
Description copied from interface:SegmentArchiveWriter
Write the binary references data.- Specified by:
writeBinaryReferences
in interfaceSegmentArchiveWriter
- 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 interfaceSegmentArchiveWriter
- 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 interfaceSegmentArchiveWriter
- Returns:
- number of entries
-
close
Description copied from interface:SegmentArchiveWriter
Close the archive.- Specified by:
close
in interfaceSegmentArchiveWriter
- 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 interfaceSegmentArchiveWriter
- Returns:
- true if the archive has been created, false otherwise
-
flush
Description copied from interface:SegmentArchiveWriter
Flush all the data to the storage. After returning from this method successfully, all the segments written with theSegmentArchiveWriter.writeSegment(long, long, byte[], int, int, int, int, boolean)
should be actually saved to the storage.- Specified by:
flush
in interfaceSegmentArchiveWriter
- Throws:
IOException
-
getName
Description copied from interface:SegmentArchiveWriter
Get the name of the archive.- Specified by:
getName
in interfaceSegmentArchiveWriter
- Returns:
- archive name
-
isRemote
public boolean isRemote()Description copied from interface:SegmentArchiveWriter
This method returnstrue
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 interfaceSegmentArchiveWriter
- 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 interfaceSegmentArchiveWriter
- Returns:
- maximum number of segments supported by the writer implementation
-