我正在尝试获取填充的序列化avro GenericRecord。我不想将avro写入文件,而是获得一个可以进一步传递的字节数组。
我实际上尝试使用avro :: 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;