-
Notifications
You must be signed in to change notification settings - Fork 4.1k
Description
Describe the enhancement requested
Flight gRPC serialization and deserialization (FlightDataSerialize, FlightDataDeserialize) are implemented in flight/transport/grpc/serialization_internal.{h,cc}. Those are transport aware using grpc::ByteBuffer and/or grpc::Slice on their API. This means any code that needs to encode or decode FlightPayload/FlightData must depend on gRPC C++ internals.
We have started a PoC about gRPC Async. This is where this issue has spawned:
The above PR uses a bidi reactor which serializes/deserializes outside the gRPC's SerializationTraits hook. It is not clear whether we will provide our own BidiReactor or cookbooks for guidance in the future but both of those could use the new serialization/deserialization API and be gRPC agnostic.
We should extract transport-agnostic serialization/deserialization functions that operate on arrow::Buffer/BufferVector, and make the existing gRPC functions thin wrappers around them.
Component(s)
C++, FlightRPC