From c4a7ccb448f270b8ea05efecb14be6c66231d3fd Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 3 Nov 2015 14:15:30 +0100 Subject: Use fallback asn1_ExtAlt for dispatching --- src/acse.erl | 10 +++++++--- src/tapi.erl | 37 +++++-------------------------------- 2 files changed, 12 insertions(+), 35 deletions(-) diff --git a/src/acse.erl b/src/acse.erl index cb0af0e..1112345 100644 --- a/src/acse.erl +++ b/src/acse.erl @@ -20,8 +20,8 @@ associate() -> release() -> 'ACSE-1':encode('ACSE-apdu', {rlrq, #'RLRQ-apdu'{}}). -decode(Msg) -> - 'ACSE-1':decode('ACSE-apdu', Msg). +decode(Data) -> + 'ACSE-1':decode('ACSE-apdu', Data). dispatch({aare, #'AARE-apdu'{result = Result}}) -> case Result of @@ -33,4 +33,8 @@ dispatch({rlre, _}) -> ok; dispatch({abrt, _}) -> - error. + error; + +dispatch({asn1_ExtAlt, Data}) -> + {ok, Rose} = rose:decode(Data), + rose:dispatch(Rose). diff --git a/src/tapi.erl b/src/tapi.erl index 517b7be..88f6f31 100644 --- a/src/tapi.erl +++ b/src/tapi.erl @@ -16,6 +16,7 @@ start_link() -> gen_server:start_link({local, ?SERVER}, ?MODULE, [?HOST, ?PORT], []). init(Args) -> + io:format("INIT~n", []), [Host, Port] = Args, gen_tcp:connect(Host, Port, [binary, {packet, 2}], ?TIMEOUT). @@ -27,20 +28,17 @@ handle_cast({ok, Reply}, Socket) -> {noreply, Socket}. handle_info({tcp, _, Data}, Socket) -> - case kind(Data) of - rose -> + case acse:decode(Data) of + {ok, {asn1_ExtAlt, Data}} -> {ok, Rose} = rose:decode(Data), - io:format("ROSE> ~p~n", [Rose]), rose:dispatch(Rose); - acse -> - {ok, Acse} = acse:decode(Data), - io:format("ACSE> ~p~n", [Acse]), + {ok, Acse} -> acse:dispatch(Acse) end, {noreply, Socket}; handle_info({tcp_closed, _}, Socket) -> - {stop, closed, Socket}. + {stop, normal, Socket}. terminate(_Reason, State) -> gen_tcp:close(State). @@ -76,28 +74,3 @@ login() -> logout() -> gen_server:cast(?SERVER, acse:release()). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -kind(<>) -> - proplists:get_value(Head, [{96, acse}, {97, acse}, {98, acse}, - {99, acse}, {100, acse}, {161, rose}, - {162, rose}, {163, rose}, {164, rose}]). - -%loop(Sock) -> -% %inet:setopts(Sock, [{active, once}]), -% receive -% {ok, Reply} -> -% io:format("Send ~p~n", [Reply]), -% spawn(gen_tcp, send, [Sock, Reply]); -% {tcp, Sock, Data} -> -% io:format("Recv ~p~n", [Data]), -% spawn(?MODULE, decode, [Data]); -% {tcp_closed, _} -> -% io:format("Connection closed~n", []), -% exit(closed) -% after ?TIMEOUT -> -% io:format("Connection timed out~n", []), -% exit(timeout) -% end, -% loop(Sock). -- cgit v1.2.3