public abstract class AbstractPagedOutputView extends Object implements DataOutputView, MemorySegmentWritable
The paging assumes that all memory segments are of the same size.
| Modifier and Type | Field and Description |
|---|---|
protected MemorySegment |
currentSegment |
protected int |
segmentSize |
| Modifier | Constructor and Description |
|---|---|
protected |
AbstractPagedOutputView(MemorySegment initialSegment,
int segmentSize)
Creates a new output view that writes initially to the given initial segment.
|
| Modifier and Type | Method and Description |
|---|---|
void |
advance()
Moves the output view to the next page.
|
protected void |
clear()
Clears the internal state.
|
int |
getCurrentPositionInSegment()
Gets the current write position (the position where the next bytes will be written) in the
current memory segment.
|
MemorySegment |
getCurrentSegment()
Gets the segment that the view currently writes to.
|
int |
getSegmentSize()
Gets the size of the segments used by this view.
|
protected abstract MemorySegment |
nextSegment(MemorySegment current,
int positionInCurrent)
This method must return a segment.
|
protected void |
seekOutput(MemorySegment seg,
int position)
Sets the internal state to the given memory segment and the given position within the
segment.
|
void |
skipBytesToWrite(int numBytes)
Skips
numBytes bytes memory. |
void |
write(byte[] b) |
void |
write(byte[] b,
int off,
int len) |
void |
write(DataInputView source,
int numBytes)
Copies
numBytes bytes from the source to this view. |
void |
write(int b) |
void |
write(MemorySegment segment,
int off,
int len)
Writes
len bytes from memory segment segment starting at offset off,
in order, to the output. |
void |
writeBoolean(boolean v) |
void |
writeByte(int v) |
void |
writeBytes(String s) |
void |
writeChar(int v) |
void |
writeChars(String s) |
void |
writeDouble(double v) |
void |
writeFloat(float v) |
void |
writeInt(int v) |
void |
writeLong(long v) |
void |
writeShort(int v) |
void |
writeUTF(String str) |
protected MemorySegment currentSegment
protected final int segmentSize
protected AbstractPagedOutputView(MemorySegment initialSegment, int segmentSize)
segmentSize. A header of length headerLength
is left at the beginning of each segment.initialSegment - The segment that the view starts writing to.segmentSize - The size of the memory segments.protected abstract MemorySegment nextSegment(MemorySegment current, int positionInCurrent) throws IOException
EOFException.current - The current memory segmentpositionInCurrent - The position in the segment, one after the last valid byte.IOExceptionpublic MemorySegment getCurrentSegment()
public int getCurrentPositionInSegment()
public int getSegmentSize()
public void advance()
throws IOException
nextSegment(MemorySegment, int) method to give the current memory segment to the concrete
subclass' implementation and obtain the next segment to write to. Writing will continue
inside the new segment after the header.IOException - Thrown, if the current segment could not be processed or a new segment
could not be obtained.protected void seekOutput(MemorySegment seg, int position)
seg - The memory segment to write the next bytes to.position - The position to start writing the next bytes to.protected void clear()
advance() or seekOutput(MemorySegment, int) is called.advance(),
seekOutput(MemorySegment, int)public void write(int b)
throws IOException
write in interface DataOutputIOExceptionpublic void write(byte[] b)
throws IOException
write in interface DataOutputIOExceptionpublic void write(byte[] b,
int off,
int len)
throws IOException
write in interface DataOutputIOExceptionpublic void writeBoolean(boolean v)
throws IOException
writeBoolean in interface DataOutputIOExceptionpublic void writeByte(int v)
throws IOException
writeByte in interface DataOutputIOExceptionpublic void writeShort(int v)
throws IOException
writeShort in interface DataOutputIOExceptionpublic void writeChar(int v)
throws IOException
writeChar in interface DataOutputIOExceptionpublic void writeInt(int v)
throws IOException
writeInt in interface DataOutputIOExceptionpublic void writeLong(long v)
throws IOException
writeLong in interface DataOutputIOExceptionpublic void writeFloat(float v)
throws IOException
writeFloat in interface DataOutputIOExceptionpublic void writeDouble(double v)
throws IOException
writeDouble in interface DataOutputIOExceptionpublic void writeBytes(String s) throws IOException
writeBytes in interface DataOutputIOExceptionpublic void writeChars(String s) throws IOException
writeChars in interface DataOutputIOExceptionpublic void writeUTF(String str) throws IOException
writeUTF in interface DataOutputIOExceptionpublic void skipBytesToWrite(int numBytes)
throws IOException
DataOutputViewnumBytes bytes memory. If some program reads the memory that was skipped over,
the results are undefined.skipBytesToWrite in interface DataOutputViewnumBytes - The number of bytes to skip.IOException - Thrown, if any I/O related problem occurred such that the view could not
be advanced to the desired position.public void write(DataInputView source, int numBytes) throws IOException
DataOutputViewnumBytes bytes from the source to this view.write in interface DataOutputViewsource - The source to copy the bytes from.numBytes - The number of bytes to copy.IOException - Thrown, if any I/O related problem occurred, such that either the input
view could not be read, or the output could not be written.public void write(MemorySegment segment, int off, int len) throws IOException
MemorySegmentWritablelen bytes from memory segment segment starting at offset off,
in order, to the output.write in interface MemorySegmentWritablesegment - memory segment to copy the bytes from.off - the start offset in the memory segment.len - The number of bytes to copy.IOException - if an I/O error occurs.Copyright © 2023–2025 The Apache Software Foundation. All rights reserved.