Protobuf3: что происходит, когда все поля объекта имеют значение по умолчанию - PullRequest
0 голосов
/ 13 декабря 2018

Насколько я понимаю, с proto3 можно сказать, что для скаляров невозможно определить, установил ли отправитель сообщения значение по умолчанию или не устанавливал это поле вообще, поскольку значения по умолчанию не передаются по проводам.То есть вызов hasField для этого поля вернет false независимо от того, было установлено значение по умолчанию или нет.И hasField будет возвращать true только в том случае, если для поля было установлено значение, отличное от значения по умолчанию.

Я читал некоторые материалы об использовании объекта в качестве оберток, чтобы обойти эту ситуацию, но все еще пытаюсь понять, как этонапример: https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/wrappers.proto

Мой вопрос: если все поля объекта будут установлены в значения по умолчанию, будет ли этот объект по-прежнему передаваться по проводам?Или hasFields для этого объекта вернет False?

1 Ответ

0 голосов
/ 13 декабря 2018

Сериализация с нулевым байтом совершенно допустима в protobuf.Если ничего не нужно сериализовать, потому что все поля по умолчанию: вы получите ноль байтов.

...