2010-02-09 5 views
4

Quel est le type Thrift correspondant pour:atomes Erlang et tuples dans Thrift

  • un tuple Erlang (je peux imaginer que c'est un struct)
  • un atome Erlang (le cas échéant?)

Existe-t-il une documentation disponible avec les mappages directs entre les types Erlang et les types Thrift IDL?

Répondre

3

Eh bien, je vais essayer de me répondre :)

Apparemment, il n'y a pas de traduction directe de Erlang tuples dans Thrift. Ce que vous pouvez faire est d'inclure dans votre module Erlang les définitions de type générées par Thrift et d'écrire votre code Erlang afin qu'il utilise les enregistrements Erlang générés comme paramètres et/ou renvoie des valeurs pour vos fonctions.

Les atomes d'erlang doivent être traduits en binaires Thrift (ou éventuellement en chaînes).

Donc, si vous voulez avoir quelque chose comme:

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

Vous devez spécifier dans votre whatever.thrift fichier:

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

service myService { 
    MyTuple cool_function() 
} 

Plus, vous devez écrire votre Erlang fonctionnent comme:

[...] 

-include("whatever_types.hrl"). 

[...] 

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

S'il vous plaît, corrigez-moi si je Je me trompe.