Эрланг атомы и кортежи в Thrift - PullRequest
4 голосов
/ 09 февраля 2010

Какой тип Thrift соответствует:

  • кортеж Эрланга (я могу представить, что это структура)
  • атом Эрланга (если есть?)

Есть ли доступная документация с прямыми отображениями между типами Erlang и типами Thrift IDL?

1 Ответ

3 голосов
/ 11 февраля 2010

Ну, я постараюсь ответить самому себе:)

По-видимому, в Thrift нет прямого перевода кортежей Эрланга. Вы можете включить в свой модуль Erlang определения типов, сгенерированные Thrift, и написать свой код Erlang, чтобы он использовал созданные записи Erlang в качестве параметров и / или возвращаемых значений для ваших функций.

Атомы Эрланга должны быть переведены в двоичные файлы Thrift (или, в конечном итоге, в строки).

Итак, если вы хотите что-то вроде:

-spec cool_function() ->
  {atom(), atom()}.
cool_function() ->
  {foo, bar}

Вам необходимо указать в файле what.thrift :

struct MyTuple {
  1: binary first,
  2: binary second
}

service myService {
  MyTuple cool_function()
}

Кроме того, вам нужно написать свою функцию Erlang как:

[...]

-include("whatever_types.hrl").

[...]

-spec cool_function() ->
  #myTuple{}.
cool_function() ->
  #myTuple{
    first = atom_to_binary(foo, utf8),
    second = atom_to_binary(bar, utf8)
  }.

Пожалуйста, поправьте меня, если я ошибаюсь.

...