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 int |
headerLength |
protected int |
segmentSize |
Modifier | Constructor and Description |
---|---|
protected |
AbstractPagedOutputView(int segmentSize,
int headerLength) |
protected |
AbstractPagedOutputView(MemorySegment initialSegment,
int segmentSize,
int headerLength)
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 |
getHeaderLength() |
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 final int segmentSize
protected final int headerLength
protected AbstractPagedOutputView(MemorySegment initialSegment, int segmentSize, int headerLength)
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.headerLength
- The number of bytes to skip at the beginning of each segment for the header.protected AbstractPagedOutputView(int segmentSize, int headerLength)
segmentSize
- The size of the memory segments.headerLength
- The number of bytes to skip at the beginning of each segment for the header.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.public int getHeaderLength()
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 © 2014–2020 The Apache Software Foundation. All rights reserved.