Я пишу msgpack-кодированные данные в файл. При написании я просто использую fbuffer API C. Как и в случае (в этом случае я перечеркнула всю обработку ошибок):Как распаковать файл msgpack?
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 как-то считываться с диска напрямую? Или есть какой-то стандартный шаблон для этого?