From 0d1765b453fcae626e44d460261482913a867e22 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 9 Nov 2015 13:15:44 +0100 Subject: Drop dispatch --- src/pbx_acse.erl | 25 ++++++++++--------------- src/pbx_conn.erl | 8 +------- src/pbx_rose.erl | 26 +++++++++++--------------- 3 files changed, 22 insertions(+), 37 deletions(-) diff --git a/src/pbx_acse.erl b/src/pbx_acse.erl index 25755ad..7d81e26 100644 --- a/src/pbx_acse.erl +++ b/src/pbx_acse.erl @@ -3,7 +3,7 @@ -include("ACSE-1.hrl"). -include("CSTA-application-context-information-csta3.hrl"). --export([encode/1, decode/1, dispatch/1]). +-export([encode/1, decode/1]). encode(userinformation) -> 'CSTA-application-context-information-csta3':encode( @@ -24,21 +24,16 @@ encode(release) -> encode(Data) -> 'ACSE-1':encode('ACSE-apdu', Data). -decode(Data) -> - 'ACSE-1':decode('ACSE-apdu', Data). - -dispatch({aare, #'AARE-apdu'{result = accepted}}) -> +decode({aare, #'AARE-apdu'{result = accepted}}) -> ok; - -dispatch({aare, #'AARE-apdu'{}}) -> +decode({aare, #'AARE-apdu'{}}) -> error; - -dispatch({rlre, _}) -> +decode({rlre, _}) -> ok; - -dispatch({abrt, _}) -> +decode({abrt, _}) -> error; - -dispatch({asn1_ExtAlt, Data}) -> - {ok, Rose} = pbx_rose:decode(Data), - pbx_rose:dispatch(Rose). +decode({asn1_ExtAlt, Data}) -> + pbx_rose:decode(Data); +decode(Data) -> + {ok, Pdu} = 'ACSE-1':decode('ACSE-apdu', Data), + decode(Pdu). diff --git a/src/pbx_conn.erl b/src/pbx_conn.erl index 3b7465a..a4eecec 100644 --- a/src/pbx_conn.erl +++ b/src/pbx_conn.erl @@ -27,13 +27,7 @@ handle_cast({error, Reason}, Socket) -> {stop, Reason, Socket}. handle_info({tcp, _, Data}, Socket) -> - case pbx_acse:decode(Data) of - {ok, {asn1_ExtAlt, Data}} -> - {ok, Rose} = pbx_rose:decode(Data), - pbx_rose:dispatch(Rose); - {ok, Acse} -> - pbx_acse:dispatch(Acse) - end, + pbx_acse:decode(Data), {noreply, Socket}; handle_info({tcp_closed, _}, Socket) -> diff --git a/src/pbx_rose.erl b/src/pbx_rose.erl index 17d6dba..d7e4185 100644 --- a/src/pbx_rose.erl +++ b/src/pbx_rose.erl @@ -1,13 +1,10 @@ -module(pbx_rose). --export([decode/1, invoke/2, dispatch/1]). +-export([decode/1, invoke/2]). -include("opcodes.hrl"). -include("Remote-Operations-Generic-ROS-PDUs.hrl"). -decode(Data) -> - 'Remote-Operations-Generic-ROS-PDUs':decode('ROS', Data). - return(Id, Op, {ok, Data}) -> 'Remote-Operations-Generic-ROS-PDUs':encode('ROS', {returnResult, #'ReturnResult'{invokeId = Id, @@ -18,7 +15,7 @@ invoke(Op, {ok, Data}) -> 'Remote-Operations-Generic-ROS-PDUs':encode('ROS', {invoke, #'Invoke'{invokeId = Id, opcode = Op, argument = Data}}). -dispatch({invoke, #'Invoke'{invokeId = Id, opcode = Op, argument = Data}}) -> +decode({invoke, #'Invoke'{invokeId = Id, opcode = Op, argument = Data}}) -> pbx_invoke:set(Id), case Op of ?MAKECALL -> @@ -41,12 +38,10 @@ dispatch({invoke, #'Invoke'{invokeId = Id, opcode = Op, argument = Data}}) -> _ -> error end; - -dispatch({returnResult, #'ReturnResult'{invokeId = Id, result = Data}}) -> +decode({returnResult, #'ReturnResult'{invokeId = Id, result = Data}}) -> pbx_invoke:set(Id), - dispatch(Data); - -dispatch({returnError, #'ReturnError'{invokeId = Id, errcode = Op, parameter = Data}}) -> + decode(Data); +decode({returnError, #'ReturnError'{invokeId = Id, errcode = Op, parameter = Data}}) -> pbx_invoke:set(Id), case Op of ?ERROR -> @@ -54,13 +49,11 @@ dispatch({returnError, #'ReturnError'{invokeId = Id, errcode = Op, parameter = D io:format("Error: ~p~n", [Error]) end, error; - -dispatch({reject, #'Reject'{invokeId = Id, problem = Problem}}) -> +decode({reject, #'Reject'{invokeId = Id, problem = Problem}}) -> pbx_invoke:set(Id), io:format("Problem: ~p~n", [Problem]), error; - -dispatch(#'ReturnResult_result'{opcode = Op, result = Data}) -> +decode(#'ReturnResult_result'{opcode = Op, result = Data}) -> case Op of ?MAKECALL -> {ok, Result} = pbx_dial:decode(Data), @@ -77,4 +70,7 @@ dispatch(#'ReturnResult_result'{opcode = Op, result = Data}) -> _ -> io:format("Result: ~p~n", [Data]) end, - ok. + ok; +decode(Data) -> + {ok, Pdu} = 'Remote-Operations-Generic-ROS-PDUs':decode('ROS', Data), + decode(Pdu). -- cgit v1.2.3