Несколько корневых таблиц в плоских буферах

Я проверяю Flatbuffers для реализации протокола связи. Когда сообщение получено, в моем случае оно может содержать несколько разных таблиц. Если я правильно понимаю, способ достичь этого в Flatbuffers — это использовать «корневую» таблицу, в которой каждая объединенная таблица может быть разной.

В моем случае я уже знаю входящий тип (тип является частью заголовка) => Мне не обязательно иметь возможность размещать каждый тип внутри одной таблицы. Однако представляется невозможным пометить несколько таблиц как «корневые» типы. Это означает, что если я определил таблицы Foo а также Bar что я могу получить только GetFoo() или GetBar() метод десериализации, но не оба.

Я предполагаю, что было бы также возможно разделить определения по разным файлам схемы, но, поскольку они будут совместно использовать некоторые подклассы, мне также потребуется общий файл схемы для общих определений. Это кажется немного сложнее, чем необходимо для простых случаев.

Есть ли другой способ десериализации нескольких разных типов с помощью Flatbuffers?

1

Решение

Да, ты можешь это сделать. Обратите внимание, что сгенерированный GetMyType() просто коротко для шаблонного GetRootAs<MyType> который вы можете использовать с любым типом.

2

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

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

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