有没有办法在没有实际编码的情况下获得编码的avro消息的大小?
我使用Avro 1.8.1 for C ++。
我习惯使用谷歌协议缓冲区,您可以在protobuf上调用ByteSize()
来获取编码大小,这样我就可以找到类似的内容。
由于消息本质上是一个原始结构,我得到的是无法从消息本身检索大小,但也许有一种我不知道的辅助方法?
答案 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();