avro-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matt Stevenson <matt.r.steven...@gmail.com>
Subject Re: How to extract byte array from memoryOutputStream
Date Sat, 12 May 2012 00:59:36 GMT
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 <gaurav324@gmail.com> wrote:

> I want to extract byte array from memoryOutputStream to transfer the
> encoded data. How do I achieve that?
>



-- 
Matt Stevenson.

Mime
View raw message