Где спецификация формата Thrift?

Хотя формат Thrift относительно широко используется (и проект все еще жив), я не смог найти спецификацию для базового формата данных. Или форматы, учитывая, что есть, по-видимому, как минимум два формата; стандартный и компактный.

Учитывая его широкое использование, я надеюсь, что это просто мой плохой google-fu, а спецификация или спецификации существуют (вне исходного кода). Если да, пожалуйста, поделитесь!

EDIT: исходный код Java не так уж плох для определения формата; см. TBinaryProtocol.java и TCompactBinaryProtocol.java; которые содержат примитивы, вызываемые сгенерированными классами (которые расширяют TBase)

EDIT2: в то время как в нем нет спецификации формата, "недостающее руководство" является хорошим показанием.

Ответы

Ответ 1

Формат сообщения Thrift зависит от выбранного протокола сериализации. Вы можете сериализовать объект Thrift с помощью одного из многих протоколов, включая TBinaryProtocol, TCompactProtocol, TJSONProtocol и другие неясные параметры. Протокол описан абстрактно в исходном Thrift Whitepaper PDF с точки зрения API, но в настоящее время не определен нигде в проекте Thrift apache.

Протокол TCompactProtocol немного лучше определен в wiki, но не просто.

Пока доступная документация не будет доступна, вы также можете изучить код библиотеки Python вместе с документацией модуля Python struct в качестве еще одной опции.

Ответ 2

У меня была такая же проблема, и поэтому я решил написать спецификацию двоичного и компактного протокола Thrift.

Вы можете найти его здесь: https://erikvanoosten.github.io/thrift-missing-specification/

Ответ 3

Есть две двоичные кодировки, компактная и некомпактная.

Обычно в дикой природе вы найдете компактный протокол:

https://github.com/apache/thrift/blob/master/doc/specs/thrift-compact-protocol.md

Хотя некомпактный протокол, вероятно, является устаревшим протоколом:

https://github.com/apache/thrift/blob/master/doc/specs/thrift-binary-protocol.md

Это приблизительный обзор спецификации:

https://github.com/apache/thrift/blob/master/doc/specs/thrift-protocol-spec.md