Размер закодированного авро сообщения без его кодирования

Есть ли способ получить размер закодированного сообщения Avro без фактического его кодирования?

Я использую Avro 1.8.1 для C ++.

Я привык к буферам протокола Google, где вы можете позвонить ByteSize() на protobuf, чтобы получить закодированный размер, так что это что-то похожее, что я ищу.

Поскольку сообщение по сути является необработанной структурой, я понимаю, что размер не может быть получен из самого сообщения, но, возможно, существует вспомогательный метод, о котором я не знаю?

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();
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector