2009-05-22 11 views
2

、我々はXDR encoded packets for network communicationsを使用している別の非アーランアプリにErlangのアプリケーションのインタフェースを話していました。erlangでXDRタイプをエンコード/デコードする推奨される方法は何ですか?別のSOの議論で

残念ながら、私は本当にアーランを使用してXDRデータを扱う上の任意の実際のポインタを見つけることができませんでした。

だから、ErlangでXDRエンコードされたデータを扱うの推奨方法は何ですか?

おかげ

PS:これまでのところ、私は次のリソースを見つけることができる:

+0

+1。現在アーランを学んでいます。 :)ご回答のため –

答えて

0

独自のXDRエンコードおよびデコードライブラリを構築することは困難ではありません。 XDRにErlangの用語をエンコード

は重要ではありません。他の道を進ん

%% @spec push_bool(bool()) -> binary() 

push_bool(Value) -> 
    case Value of 
     true -> 
      <<0, 0, 0, 1>>; 
     false -> 
      <<0, 0, 0, 0>> 
    end. 

エラー報告を行うことがしたいかに応じて、もう少し冗長です。私は例外を選択した:それは多分合計でコードの数百行になるよう

%% @spec pull_bool(binary()) -> {bool(), binary()} 

pull_bool(Bin) -> 
    {Value, Tail} = 
     try 
      <<0, 0, 0, V, T/binary>> = Bin, 
      {V, T} 
     catch 
      error:{badmatch, _} -> 
       throw({xdr_error, "Invalid boolean value"}) 
     end, 
    Result = case Value of 
       0 -> false; 
       1 -> true; 
       _ -> throw({xdr_error, "Invalid boolean value"}) 
      end, 
    {Result, Tail}. 

は本当に全部で多くのXDRのデータ型はありません。

+0

おかげで、元の投稿で述べたように、私は複雑さを認識していて、2000年から利用できるXDRライブラリの完全な実装があります:http://erlang.org/pipermail/erlang-questions/ 2000-August/001543.html私はこれを今日確実に行う推奨/標準的な方法について尋ねていました。 – none

1

Jungerl Erlangのソースコレクション内rpcというプロジェクトがあります。これは、XDRベースのプロトコルを管理するErlangコードを生成するコードジェネレータを備えています。

関連する問題