Pull to refresh

Comments 5

На мой взгляд в 22 году пора начинать использовать пакетные менеджеры для с++. Например vcpkg, по настроению можно взять конан или любую альтернативу.

последовательность бит из ключей и значений

На самом деле в сериализованном представлении ключи выкинуты (остались значения), так как считается, что контрагент знает про тот же .proto файл и может с его помощью расшифровать бинарный поток. Без .proto файла бинарный поток понять человеку/программе невозможно, читабельны только string-поля.

Хорошо, а почему если я сериализую данные и их куда-то записываю появляется ключ, или вы о другом?

Да, не зная структуры сообщения расшифровать корректно не выйдет т.к для того же знакового и беззнакового инта один и тот же wire type. Более того, можно и десериализовать одно сообщение в другое.

Я имел в виду названия полей, то есть из записи

repeated string Pepper = 13;

В сериализованном виде слово "Pepper" пропадет, но к сожалению я не так прочитал абзац (неправильно понял), посчитал что "Pepper" и есть "ключ" (по аналогии с JSON).

Чудесно, что так в тему поднялась тема протобафа. Может быть гуру подскажут куда копать.

Есть библиотека, которая по файлу my.proto генерирует pb.cc и pb.h, и она чудесно пишет пакеты в базу.

Есть вторая библиотека, которая по файлу my.proto генерирует pb.cc и pb.h, и она чудесно читает пакеты из базы.

Файл my.proto общий (разделяемый) между проектами этих библиотек.

А теперь обе эти библиотеки подгружаются в одном приложении и получаем ошибку, что такой тип сообщения уже используется.

Невозможно (по архитектуре) централизовать в одно место регистрацию типа. Может быть загружена как одна, так другая, так и обе библиотеки. Костыль в виде копипаста proto с другим именем пакета не желателен.

Наверняка есть способ решить такую задачу. Отправьте, пожалуйста в нужном направлении.

Sign up to leave a comment.

Articles