summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2015-11-09 13:15:44 +0100
committerDimitri Sokolyuk <demon@dim13.org>2015-11-09 13:15:44 +0100
commit0d1765b453fcae626e44d460261482913a867e22 (patch)
tree7472d38cba93017abedfd8b4ff1a482341f50e45
parent08860891263382a339129c6d0946a9e3f3902a90 (diff)
Drop dispatch
-rw-r--r--src/pbx_acse.erl25
-rw-r--r--src/pbx_conn.erl8
-rw-r--r--src/pbx_rose.erl26
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).