Я записываю данные в кодировке msgpack в файл. При написании я просто использую fbuffer C API. Как и в (для примера я вырезал всю обработку ошибок):
FILE *fp = fopen(filename, "ab");
msgpack_packer pk;
msgpack_packer_init(pk, fp, msgpack_fbuffer_write);
msgpack_pack_int(pk, 42);
// more data ...
Как мне прочитать этот файл обратно? Во всех примерах, которые я нашел, предполагается, что данные находятся в памяти, однако мои файлы имеют размер до 5 ГБ, и это не совсем хорошая идея полностью хранить их в памяти. Также я не хочу читать кусками себя. В конце концов, я не знаю, какова длина объектов msgpack, поэтому есть вероятность, что в моем буфере окажется половина целого числа.
Может ли распаковка msgpack как-то напрямую читаться с диска? Или есть какой-то стандартный шаблон для этого?