编码的avro消息的大小,不对其进行编码

时间:2017-05-02 12:39:25

标签: c++ avro

有没有办法在没有实际编码的情况下获得编码的avro消息的大小?

我使用Avro 1.8.1 for C ++。

我习惯使用谷歌协议缓冲区,您可以在protobuf上调用ByteSize()来获取编码大小,这样我就可以找到类似的内容。

由于消息本质上是一个原始结构,我得到的是无法从消息本身检索大小,但也许有一种我不知道的辅助方法?

1 个答案:

答案 0 :(得分:0)

不幸的是,无法解决这个问题......

这是一个示例,说明如何通过编码对象来计算大小:

MyAvroStruct obj;

avro::EncoderPtr encoder = avro::binaryEncoder();
std::auto_ptr<avro::OutputStream> out = avro::memoryOutputStream(1);
encoder->init(*out);
avro::encode(*encoder, obj);
out->flush();
uint32_t bufferSize = out->byteCount();