avro-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gilles Gaillard <gaill...@asperasoft.com>
Subject [Avro C] Interoperability with Java
Date Tue, 04 Jan 2011 10:53:37 GMT
Hi,

we'd like to use Avro for inter process communication between C and Java 
using regular sockets and we noted that there is not yet an 
implementation ready for RPC with Avro-C.

Our requirements do not include to have a full 'block-mode' RPC and 
therefore we would be happy with an asynchronous mode where no return 
value is expected when a message is sent. So using the IDL, that's 
equivalent to defining messages as methods with a void return value.
With the current implementation of Avro-C, we see the following 
questions and would like to know if anybody has answers or has already 
thought about a solution - or even better code that is ready to go ;-)

- On August 25, there were commits reverted in preparation for 1.4.0
   branch (949400, 947962, 947389, 947385, and 947299) for AVRO-441,
   AVRO-464, AVRO-466, AVRO-549, and AVRO-552. Do you plan to plan to
   incorporate them back in a near future - since the branch for 1.4.x
   now exists ?
   Specifically:
   AVRO-551 / 552  - Build for Win32
   AVRO-549 - Route memory management through an allocator interface

- We would like to avoid any unnecessary data copies when transferring 
byte arrays (defined with "type" : "bytes" in the schema).

   In java the binary encoder takes care of encoding the messages in a 
list of buffers - this is called 'Message Framing' in the Avro 
specification - which can then be transferred as such on the wire. For 
arrays of bytes this often mean they're simply passed through and sent 
separately which means they're nicely read from the wire and processed 
at no cost when decoding.

   My understanding is that such framing does not exists in Avro-C. Has 
anybody already written this or have stub for it (and similar for 
decoding) ?

   Using this message framing would then allow to use the 
avro_reader_memory (a modified version of it).
   Another way to go would be to write an avro_socket_reader (to be 
added in the avro_io_type_t enum)

   Any hint, what's the best way to go ?

Thanks,
-- Gilles

Mime
View raw message