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.IOException
public 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 DataOutput
IOException
public void write(byte[] b) throws IOException
write
in interface DataOutput
IOException
public void write(byte[] b, int off, int len) throws IOException
write
in interface DataOutput
IOException
public void writeBoolean(boolean v) throws IOException
writeBoolean
in interface DataOutput
IOException
public void writeByte(int v) throws IOException
writeByte
in interface DataOutput
IOException
public void writeShort(int v) throws IOException
writeShort
in interface DataOutput
IOException
public void writeChar(int v) throws IOException
writeChar
in interface DataOutput
IOException
public void writeInt(int v) throws IOException
writeInt
in interface DataOutput
IOException
public void writeLong(long v) throws IOException
writeLong
in interface DataOutput
IOException
public void writeFloat(float v) throws IOException
writeFloat
in interface DataOutput
IOException
public void writeDouble(double v) throws IOException
writeDouble
in interface DataOutput
IOException
public void writeBytes(String s) throws IOException
writeBytes
in interface DataOutput
IOException
public void writeChars(String s) throws IOException
writeChars
in interface DataOutput
IOException
public void writeUTF(String str) throws IOException
writeUTF
in interface DataOutput
IOException
public void skipBytesToWrite(int numBytes) throws IOException
DataOutputView
numBytes
bytes memory. If some program reads the memory that was skipped over,
the results are undefined.skipBytesToWrite
in interface DataOutputView
numBytes
- 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
DataOutputView
numBytes
bytes from the source to this view.write
in interface DataOutputView
source
- 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
MemorySegmentWritable
len
bytes from memory segment segment
starting at offset off
,
in order, to the output.write
in interface MemorySegmentWritable
segment
- 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–2024 The Apache Software Foundation. All rights reserved.