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.
