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

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

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

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

1 ответ

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

Другие вопросы по тегам