Каков срок действия дескриптора сгенерированного сообщения protobuf?

Я использую Protobuf 2 в моем проекте. Я хочу использовать DynamicMessageFactory создавать сообщения во время выполнения. DynamicMessageFactoryтребует Descriptor*, Я прохожу Descriptor* изменяемого сообщения сгенерированного класса. В документации сказано, что Descriptor должен пережить DynamicMessageFactory что в свою очередь должно пережить сообщение, сгенерированное фабрикой.

Каково время жизни дескриптора сгенерированного класса? Это статический член класса?

1

Решение

Дескрипторы для классов сгенерированного кода / скомпилированных сообщений живут вечно, так что вам должно быть хорошо.

Но если ваши типы соблюдаются, то нет смысла использовать DynamicMessageFactory, Динамические сообщения намного медленнее, чем сгенерированный код, и сгенерированный код поддерживает весь динамический интерфейс в дополнение к сгенерированному интерфейсу. Вы могли бы использовать созданная фабрика вместо этого, чтобы получить экземпляры сгенерированных сообщений. Или еще более честная стратегия — получить прототип сообщения, вызвав MyType::default_instance(), а затем передать этот указатель, а не обойти дескриптор.

Если вам нужно смешать некоторые динамические типы с некоторыми сгенерированными типами, также подумайте об использовании DynamicMessageFactory::SetDelegateToGeneratedFactory().

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]