如何获取avro GenericRecord的字节数组?

时间:2019-11-11 08:00:59

标签: c++ serialization avro

我正在尝试获取填充的序列化avro GenericRecord。我不想将avro写入文件,而是获得一个可以进一步传递的字节数组。

我实际上尝试使用av​​ro :: GenericWriter和avro :: StreamReader编写,但是我得到的只是一个空白的4096长度的字节数组。

avro::ValidSchema recordSchema;
recordSchema = avro::compileJsonSchemaFromString(schemaString);
avro::GenericDatum gd(recordSchema);
avro::GenericDatum result = populateSchema(record, gd);

我尝试过的事情:

avro::EncoderPtr e = avro::binaryEncoder();
avro::OutputStreamPtr out = avro::memoryOutputStream();
e->init(*out);

avro::GenericWriter writer(recordSchema, e);
writer.write(result);
out->flush();

avro::InputStreamPtr in = avro::memoryInputStream(*out);
avro::StreamReader reader(*in);
size_t outputLen = out->byteCount();
uint8_t* theByteData = new uint8_t[outputLen];
reader.readBytes(theByteData, outputLen);
return (char*)theByteData;

0 个答案:

没有答案