Thanks Matt ! But what is the suggested way of transferring encoded bytes over the wire. Avro does not seem to expose the encoded bytes anywhere.
- Gaurav Nanda On Sat, May 12, 2012 at 6:29 AM, Matt Stevenson <[email protected]> wrote: > I made a copy of the MemoryOutputStream with a header, so you can get at the > bytes. > > http://branchingworlds.com/avro/OpenMemoryOutputStream.h > http://branchingworlds.com/avro/OpenMemoryOutputStream.cpp > > Add those to your project. > include "OpenMemoryOutputStream.h" and call openMemoryOutputStream() rather > than memoryOutputStream(). > > The memory is stored in chunks. Here's an example of iterating through it: > >> auto_ptr<OpenMemoryOutputStream> os = openMemoryOutputStream(); >> EncoderPtr e = binaryEncoder(); >> e->init(*os); >> >> avro::encode(*e, *t); >> e->flush(); >> >> int count = os->byteCount(); >> char* data = new char[count]; >> int i=0; >> for (std::vector<uint8_t*>::const_iterator it = os->data_.begin(); it != >> os->data_.end() && i<count; ++it) { >> uint8_t* chunk = *it; >> int size = os->chunkSize_; >> for(int j=0; j<size && i<count; j++, i++){ >> data[i] = chunk[j]; >> } >> } > > > On Thu, May 10, 2012 at 12:19 PM, Gaurav Nanda <[email protected]> wrote: >> >> I want to extract byte array from memoryOutputStream to transfer the >> encoded data. How do I achieve that? > > > > > -- > Matt Stevenson.
