2016-03-11 2 views
0

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

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

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

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

ответ

2

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

+0

Ах! Я не смотрел код, а только документы. Я открою билет, требующий записку в документах. – villintehaspam

Смежные вопросы