2009-05-22 2 views
2

또 다른 SO 토론에서 우리는 erlang 응용 프로그램을 XDR encoded packets for network communications을 사용하는 다른 비 얼랑 응용 프로그램과 인터페이스하는 것에 대해 이야기했습니다.erlang에서 XDR 유형을 인코딩/디코딩하는 권장 방법은 무엇입니까?

불행히도, 나는 정말로 erlang을 사용하여 XDR 데이터를 다루는 실제 포인터를 찾을 수 없었습니다.

그래서 erlang에서 XDR로 인코딩 된 데이터를 처리하는 권장 방법은 무엇입니까?

감사

PS

:

+0

+1. 현재 Erlang을 배우고 있습니다. :) –

답변

0

독자적인 XDR 인코딩 및 디코딩 라이브러리를 작성하는 것은 어렵지 않습니다. 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 데이터 형식은 없습니다.

+0

원본 게시글에서 언급했듯이 답장을 보내 주셔서 감사합니다. 복잡성에 대해 알고 있으며 2000 년부터 사용할 수있는 XDR 라이브러리의 전체 구현이 있습니다. http://erlang.org/pipermail/erlang-questions/ 2000-August/001543.html 나는 이것을 믿을 수있게 오늘하는 권장/표준 방법에 대해 묻는 중이다. – none

1

Jungerl 얼랭 소스 콜렉션에는 rpc이라는 프로젝트가 있습니다. XDR 기반 프로토콜을 관리하기 위해 Erlang 코드를 생성하는 코드 생성기가 있습니다.

관련 문제