You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@arrow.apache.org by Antoine Pitrou <so...@pitrou.net> on 2019/04/03 15:01:42 UTC

[Flight] Question about C++ implementation

Hello,

Why do we have parsing / unparsing implementations in
src/arrow/flight/internal.cc?

I assumed gRPC / protobuf would give this to us for free.  Instead it
seems we have to write it ourselves?

Regards

Antoine.



Re: [Flight] Question about C++ implementation

Posted by Antoine Pitrou <an...@python.org>.
Hi David,

Thanks for the clarification.  I agree about not exposing Protobuf in
the public API.  But it's a pity it forces us to such manual data
wrangling...

Regards

Antoine.


Le 03/04/2019 à 17:12, David Li a écrit :
> Hi Antoine,
> 
> The ToProto/FromProto methods convert between Protobuf structs and
> Flight-specific structs. They aren't actually parsing or serializing
> anything. While you could argue for just using the Protobuf structs
> directly, I there are a few reasons not to:
> 
> - We don't want to expose Protobuf in the public APIs, and
> - Google's official guidance recommends against using Protobuf structs
> to actually model application data [1] (and while they claim Protobuf
> structs are basically "dumb data structs", they're quite far from
> that, with lots of generated methods [2])
> 
> [1]: https://developers.google.com/protocol-buffers/docs/cpptutorial#parsing-and-serialization
> [2]: https://developers.google.com/protocol-buffers/docs/reference/cpp-generated
> 
> Best,
> David
> 
> On 4/3/19, Antoine Pitrou <so...@pitrou.net> wrote:
>>
>> Hello,
>>
>> Why do we have parsing / unparsing implementations in
>> src/arrow/flight/internal.cc?
>>
>> I assumed gRPC / protobuf would give this to us for free.  Instead it
>> seems we have to write it ourselves?
>>
>> Regards
>>
>> Antoine.
>>
>>
>>

Re: [Flight] Question about C++ implementation

Posted by David Li <li...@gmail.com>.
Hi Antoine,

The ToProto/FromProto methods convert between Protobuf structs and
Flight-specific structs. They aren't actually parsing or serializing
anything. While you could argue for just using the Protobuf structs
directly, I there are a few reasons not to:

- We don't want to expose Protobuf in the public APIs, and
- Google's official guidance recommends against using Protobuf structs
to actually model application data [1] (and while they claim Protobuf
structs are basically "dumb data structs", they're quite far from
that, with lots of generated methods [2])

[1]: https://developers.google.com/protocol-buffers/docs/cpptutorial#parsing-and-serialization
[2]: https://developers.google.com/protocol-buffers/docs/reference/cpp-generated

Best,
David

On 4/3/19, Antoine Pitrou <so...@pitrou.net> wrote:
>
> Hello,
>
> Why do we have parsing / unparsing implementations in
> src/arrow/flight/internal.cc?
>
> I assumed gRPC / protobuf would give this to us for free.  Instead it
> seems we have to write it ourselves?
>
> Regards
>
> Antoine.
>
>
>