Struct FFI_ArrowArrayStream
#[repr(C)]pub struct FFI_ArrowArrayStream {
get_schema: Option<unsafe extern "C" fn(*mut FFI_ArrowArrayStream, *mut FFI_ArrowSchema) -> i32>,
get_next: Option<unsafe extern "C" fn(*mut FFI_ArrowArrayStream, *mut FFI_ArrowArray) -> i32>,
get_last_error: Option<unsafe extern "C" fn(*mut FFI_ArrowArrayStream) -> *const i8>,
release: Option<unsafe extern "C" fn(*mut FFI_ArrowArrayStream)>,
private_data: *mut c_void,
}Expand description
ABI-compatible struct for ArrayStream from C Stream Interface
See https://arrow.apache.org/docs/format/CStreamInterface.html#structure-definitions
This was created by bindgen
Fields§
§get_schema: Option<unsafe extern "C" fn(*mut FFI_ArrowArrayStream, *mut FFI_ArrowSchema) -> i32>§get_next: Option<unsafe extern "C" fn(*mut FFI_ArrowArrayStream, *mut FFI_ArrowArray) -> i32>§get_last_error: Option<unsafe extern "C" fn(*mut FFI_ArrowArrayStream) -> *const i8>§release: Option<unsafe extern "C" fn(*mut FFI_ArrowArrayStream)>§private_data: *mut c_voidImplementations§
§impl FFI_ArrowArrayStream
impl FFI_ArrowArrayStream
pub fn new(
batch_reader: Box<dyn RecordBatchReader<Item = Result<RecordBatch, ArrowError>> + Send>,
) -> FFI_ArrowArrayStream
pub fn new( batch_reader: Box<dyn RecordBatchReader<Item = Result<RecordBatch, ArrowError>> + Send>, ) -> FFI_ArrowArrayStream
Creates a new FFI_ArrowArrayStream.
pub unsafe fn new_unchecked(
get_schema: Option<unsafe extern "C" fn(*mut FFI_ArrowArrayStream, *mut FFI_ArrowSchema) -> i32>,
get_next: Option<unsafe extern "C" fn(*mut FFI_ArrowArrayStream, *mut FFI_ArrowArray) -> i32>,
get_last_error: Option<unsafe extern "C" fn(*mut FFI_ArrowArrayStream) -> *const i8>,
release: Option<unsafe extern "C" fn(*mut FFI_ArrowArrayStream)>,
private_data: *mut c_void,
) -> FFI_ArrowArrayStream
pub unsafe fn new_unchecked( get_schema: Option<unsafe extern "C" fn(*mut FFI_ArrowArrayStream, *mut FFI_ArrowSchema) -> i32>, get_next: Option<unsafe extern "C" fn(*mut FFI_ArrowArrayStream, *mut FFI_ArrowArray) -> i32>, get_last_error: Option<unsafe extern "C" fn(*mut FFI_ArrowArrayStream) -> *const i8>, release: Option<unsafe extern "C" fn(*mut FFI_ArrowArrayStream)>, private_data: *mut c_void, ) -> FFI_ArrowArrayStream
Creates a new FFI_ArrowArrayStream from its raw parts.
§Safety
The caller takes responsibility for the C stream interface contract:
- Each callback that is
Somemust be sound to invoke with a pointer to this struct, and must implement the semantics the C stream interface specifies for it. private_datamust own everything the callbacks rely on, and must remain valid untilreleaseis called.release, ifSome, is invoked byDropwith a pointer to this struct. It must freeprivate_dataexactly once and then set the release callback toNoneto mark the stream released.- If
releaseisNonethe stream is already released, so dropping it must not leak: nothing may be left for the callback to free.
pub unsafe fn from_raw(
raw_stream: *mut FFI_ArrowArrayStream,
) -> FFI_ArrowArrayStream
pub unsafe fn from_raw( raw_stream: *mut FFI_ArrowArrayStream, ) -> FFI_ArrowArrayStream
Takes ownership of the pointed to FFI_ArrowArrayStream
This acts to move the data out of raw_stream, setting the release callback to NULL
§Safety
raw_streammust be valid for reads and writesraw_streammust be properly alignedraw_streammust point to a properly initialized value ofFFI_ArrowArrayStream
pub fn empty() -> FFI_ArrowArrayStream
pub fn empty() -> FFI_ArrowArrayStream
Creates a new empty FFI_ArrowArrayStream. Used to import from the C Stream Interface.
pub fn get_schema(
&self,
) -> Option<unsafe extern "C" fn(*mut FFI_ArrowArrayStream, *mut FFI_ArrowSchema) -> i32>
pub fn get_schema( &self, ) -> Option<unsafe extern "C" fn(*mut FFI_ArrowArrayStream, *mut FFI_ArrowSchema) -> i32>
Returns the producer-provided callback that writes this stream’s schema, if any.
§Safety
The callback must be invoked with a pointer to the stream it was read from.
pub fn get_next(
&self,
) -> Option<unsafe extern "C" fn(*mut FFI_ArrowArrayStream, *mut FFI_ArrowArray) -> i32>
pub fn get_next( &self, ) -> Option<unsafe extern "C" fn(*mut FFI_ArrowArrayStream, *mut FFI_ArrowArray) -> i32>
Returns the producer-provided callback that yields the next array, if any.
§Safety
The callback must be invoked with a pointer to the stream it was read from.
pub fn get_last_error(
&self,
) -> Option<unsafe extern "C" fn(*mut FFI_ArrowArrayStream) -> *const i8>
pub fn get_last_error( &self, ) -> Option<unsafe extern "C" fn(*mut FFI_ArrowArrayStream) -> *const i8>
Returns the producer-provided callback that describes the last error, if any.
§Safety
The callback must be invoked with a pointer to the stream it was read from. The string it returns is owned by the producer and valid only until the next call on the stream.
pub fn release(&self) -> Option<unsafe extern "C" fn(*mut FFI_ArrowArrayStream)>
pub fn release(&self) -> Option<unsafe extern "C" fn(*mut FFI_ArrowArrayStream)>
Returns the producer-provided release callback, if any.
pub fn private_data(&self) -> *mut c_void
pub fn private_data(&self) -> *mut c_void
Returns the opaque producer-provided private data pointer.
pub unsafe fn set_release(
&mut self,
release: Option<unsafe extern "C" fn(*mut FFI_ArrowArrayStream)>,
) -> Option<unsafe extern "C" fn(*mut FFI_ArrowArrayStream)>
pub unsafe fn set_release( &mut self, release: Option<unsafe extern "C" fn(*mut FFI_ArrowArrayStream)>, ) -> Option<unsafe extern "C" fn(*mut FFI_ArrowArrayStream)>
Replaces the release callback, returning the previous one.
Lets a consumer wrap release: save the old callback, install its own, and chain back on drop. See https://github.com/apache/arrow-rs/issues/9771.
§Safety
Drop calls this callback with a pointer to self. The new callback
must correctly release this stream (usually by chaining to the returned
one) and must match the FFI_ArrowArrayStream::private_data it reads.
A wrong callback is undefined behavior on drop.
pub unsafe fn set_private_data(
&mut self,
private_data: *mut c_void,
) -> *mut c_void
pub unsafe fn set_private_data( &mut self, private_data: *mut c_void, ) -> *mut c_void
Replaces the private data pointer, returning the previous one.
§Safety
The old pointer is returned without being freed; the caller owns it from
here. The new pointer must match what the current
FFI_ArrowArrayStream::release callback expects.