avro-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Marc-André Moreau <marcandre.mor...@gmail.com>
Subject Avro C RPC
Date Thu, 20 Jun 2013 04:55:33 GMT

I am new to Avro, and I really like how it is such a small, lightweight
library. I was looking for something that I can use in pure C, so many
alternatives out there require C++ or some other higher level language and
lack proper C support. I want to use Avro for defining simple, extensible
protocols for local communication between processes over a socket or a
local unix domain socket. Both processes are C programs which I'm
developing, and where performance is a requirement for most types of
messages. Worst case scenario, I'll just define manually part of the
protocol for the messages that require every bit of performance for
encoding/decoding, but for the most part it's not required.

The first issue I encountered was the lack of a proper sample for Avro C
and the new value API in the documentation. The given sample still shows
the datum API. I figured it out by looking at the unit tests, but it wasn't
an easy "getting started".

For now I've just defined a very simple JSON schema which I'm using to
serialize and deserialize a bunch of booleans and ints. However, I may be
interested in developing tools in other languages for communicating with my
C programs. This is where I'd really like to know how exactly I can do RPC
with Avro C. Aside from the apparent lack of information as to how we can
do RPC with Avro C, there is also inconsistent information given about the
level of support. Somes slides online show RPC as being supported for C,
while in other places the docs say RPC is not implemented for Avro C.

If RPC is not supported with Avro C, what would be missing to implement it?
Also, would there be a way to simply define messages in a proper format and
do some of the RPC part manually if it's currently lacking, such that on
the other side I could the Avro RPC support from another language?

Thanks for pointing me in the right direction.

Best regards,
- Marc-Andre

View raw message