18130, "ShreyasKhandekar", "Design for IO in Apache Arrow", "2021-07-27T18:36:20Z"
Parent Issue: #18127
Arrow has a lot of types of streams which we should support.
I am actually unsure what is going on here with the GLib stuff because the way the documentation refers to some of the types makes it seems like it is much more involved that you would expect C to be. There are objects? And interfaces like Readable and Writable which are implemented by the reader and writer classes respectively.
The GArrowReadble
interface is implemented by GArrowBufferInputStream
, GArrowCUDABufferInputStream
, GArrowCompressedInputStream
, GArrowGIOInputStream
, GArrowInputStream
, GArrowMemoryMappedInputStream
and GArrowSeekableInputStream
.
The GArrowWritable
is implemented by GArrowBufferOutputStream
, GArrowCUDABufferOutputStream
, GArrowCompressedOutputStream
, GArrowFileOutputStream
, GArrowGIOOutputStream
and GArrowOutputStream
.
.
There is a hierarchy here which decides which functions can be used on what kind of stream.
There are also some functions whose purpose seems similar but I was only able to get one of those to work for me.
Personally I think that the way it is done is still verbose and stands to benefit from better naming and error message consolidation.