代码之家  ›  专栏  ›  技术社区  ›  none

在erlang中,建议使用什么方式编码/解码XDR类型?

  •  2
  • none  · 技术社区  · 16 年前

    在另一个SO讨论中,我们讨论的是将一个erlang应用程序连接到另一个使用 XDR encoded packets for network communications .

    那么在erlang中处理XDR编码数据的推荐方法是什么?

    谢谢

    PS:到目前为止,我可以找到以下资源:

    2 回复  |  直到 16 年前
        1
  •  1
  •   marco.m materialdesigner    10 年前

    有一个项目叫做 rpc Jungerl Erlang源集合。它有一个代码生成器,生成Erlang代码来管理基于XDR的协议。

        2
  •  0
  •   Tim Potter    16 年前

    将Erlang术语编码到XDR很简单:

    %% @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数据类型的总数并不多,因此总共可能有几百行代码。

    推荐文章