Commits

Wes McKinney authored 69d595ae4c6
ARROW-4558: [C++][Flight] Implement gRPC customizations without UB I admit this feels gross, but it's less gross than what was there before. I can do some more clean up but wanted to get feedback before spending any more time on it So, the problem partially lies with the gRPC C++ library. The obvious thing, and first thing I tried, was to specialize `SerializationTraits<protocol::FlightData>` and do casts between `FlightData` and `protocol::FlightData` (the proto) at the last possible moment. Unfortunately, this seems to not be possible because of this: https://github.com/grpc/grpc/blob/master/include/grpcpp/impl/codegen/proto_utils.h#L100 So I had to override that Googly hack and go to some shenanigans (see protocol.h/protocol.cc) to make sure the same templates are always visible both in `Flight.grpc.pb.cc` as well as our client.cc/server.cc Author: Wes McKinney <wesm+git@apache.org> Closes #3633 from wesm/flight-cpp-avoid-ub and squashes the following commits: ed6eb800e <Wes McKinney> Further refinements, make protocol.h an internal header. Comments per feedback b3609d4f0 <Wes McKinney> Add comments about the purpose of protocol.cc ac405b326 <Wes McKinney> Ensure .proto file is compiled before anything else 23fe416b4 <Wes McKinney> Implement gRPC customizations another way without calling reinterpret_cast on the client and server C++ types