pub struct StreamWriter<W> {
writer: W,
write_options: IpcWriteOptions,
finished: bool,
dictionary_tracker: DictionaryTracker,
data_gen: IpcDataGenerator,
}
Expand description
Writer for an IPC stream
Fields§
§writer: W
The object to write to
write_options: IpcWriteOptions
IPC write options
finished: bool
Whether the writer footer has been written, and the writer is finished
dictionary_tracker: DictionaryTracker
Keeps track of dictionaries that have been written
data_gen: IpcDataGenerator
Implementations§
Source§impl<W: Write> StreamWriter<BufWriter<W>>
impl<W: Write> StreamWriter<BufWriter<W>>
Sourcepub fn try_new_buffered(writer: W, schema: &Schema) -> Result<Self, ArrowError>
pub fn try_new_buffered(writer: W, schema: &Schema) -> Result<Self, ArrowError>
Try to create a new stream writer with the writer wrapped in a BufWriter.
See StreamWriter::try_new
for an unbuffered version.
Source§impl<W: Write> StreamWriter<W>
impl<W: Write> StreamWriter<W>
Sourcepub fn try_new(writer: W, schema: &Schema) -> Result<Self, ArrowError>
pub fn try_new(writer: W, schema: &Schema) -> Result<Self, ArrowError>
Try to create a new writer, with the schema written as part of the header.
Note that there is no internal buffering. See also StreamWriter::try_new_buffered
.
§Errors
An ‘Err’ may be returned if writing the header to the writer fails.
Sourcepub fn try_new_with_options(
writer: W,
schema: &Schema,
write_options: IpcWriteOptions,
) -> Result<Self, ArrowError>
pub fn try_new_with_options( writer: W, schema: &Schema, write_options: IpcWriteOptions, ) -> Result<Self, ArrowError>
Try to create a new writer with IpcWriteOptions
.
§Errors
An ‘Err’ may be returned if writing the header to the writer fails.
Sourcepub fn write(&mut self, batch: &RecordBatch) -> Result<(), ArrowError>
pub fn write(&mut self, batch: &RecordBatch) -> Result<(), ArrowError>
Write a record batch to the stream
Sourcepub fn finish(&mut self) -> Result<(), ArrowError>
pub fn finish(&mut self) -> Result<(), ArrowError>
Write continuation bytes, and mark the stream as done
Sourcepub fn get_mut(&mut self) -> &mut W
pub fn get_mut(&mut self) -> &mut W
Gets a mutable reference to the underlying writer.
It is inadvisable to directly write to the underlying writer.
Sourcepub fn flush(&mut self) -> Result<(), ArrowError>
pub fn flush(&mut self) -> Result<(), ArrowError>
Flush the underlying writer.
Both the BufWriter and the underlying writer are flushed.
Sourcepub fn into_inner(self) -> Result<W, ArrowError>
pub fn into_inner(self) -> Result<W, ArrowError>
Unwraps the the underlying writer.
The writer is flushed and the StreamWriter is finished before returning.
§Errors
An ‘Err’ may be returned if an error occurs while finishing the StreamWriter or while flushing the writer.
§Example
// The result we expect from an empty schema
let expected = vec![
255, 255, 255, 255, 48, 0, 0, 0,
16, 0, 0, 0, 0, 0, 10, 0,
12, 0, 10, 0, 9, 0, 4, 0,
10, 0, 0, 0, 16, 0, 0, 0,
0, 1, 4, 0, 8, 0, 8, 0,
0, 0, 4, 0, 8, 0, 0, 0,
4, 0, 0, 0, 0, 0, 0, 0,
255, 255, 255, 255, 0, 0, 0, 0
];
let schema = Schema::empty();
let buffer: Vec<u8> = Vec::new();
let options = IpcWriteOptions::try_new(8, false, MetadataVersion::V5)?;
let stream_writer = StreamWriter::try_new_with_options(buffer, &schema, options)?;
assert_eq!(stream_writer.into_inner()?, expected);