summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
authorMagnus Feuer <mfeuer@jaguarlandrover.com>2015-09-23 11:25:34 -0700
committerMagnus Feuer <mfeuer@jaguarlandrover.com>2015-09-23 11:25:34 -0700
commitff78205abe7c50c3c0b2ce35ee8bb09e3f172502 (patch)
tree05a11b10b9db6625150d516a28935b733f81660c /components
parent29365b45d1911d42cae9ca7fb9f05829d77c4bb7 (diff)
downloadrvi_core-ff78205abe7c50c3c0b2ce35ee8bb09e3f172502.tar.gz
mfeuer_json_param: Fixed message invocation to use single JSON object instead of array of objects as parameters structure.
Passed tests: Local WS -> WS ok Local HTTP -> WS ok Local WS -> HTTP ok Local HTTP -> HTTP ok RVI1:WS -> proto_json -> RVI2:WS ok RVI1:WS -> proto_json -> RVI2:HTTP ok RVI1:HTTP -> proto_json -> RVI2:WS ok RVI1HTTP -> proto_json -> RVI2:HTTP ok
Diffstat (limited to 'components')
-rw-r--r--components/proto_json/src/proto_json_rpc.erl4
-rw-r--r--components/schedule/src/schedule_rpc.erl2
-rw-r--r--components/service_edge/src/service_edge_rpc.erl15
3 files changed, 11 insertions, 10 deletions
diff --git a/components/proto_json/src/proto_json_rpc.erl b/components/proto_json/src/proto_json_rpc.erl
index 54ed2d3..7fd6b77 100644
--- a/components/proto_json/src/proto_json_rpc.erl
+++ b/components/proto_json/src/proto_json_rpc.erl
@@ -127,7 +127,7 @@ handle_call({rvi, send_message,
[
{ "service", ServiceName },
{ "timeout", Timeout },
- { "parameters", {array, Parameters} },
+ { "parameters", Parameters },
{ "signature", Signature }
]
}),
@@ -148,7 +148,7 @@ handle_cast({rvi, receive_message, [Payload, IP, Port]}, St) when is_binary(Payl
handle_cast({rvi, receive_message, [Payload, IP, Port]}, St) ->
{ok, {struct, Elems}} = exo_json:decode_string(Payload),
- [ ServiceName, Timeout, {array, Parameters}, Signature ] =
+ [ ServiceName, Timeout, Parameters, Signature ] =
opts(["service", "timeout", "parameters", "signature"], Elems, undefined),
?debug(" protocol:rcv(): service name: ~p~n", [ServiceName]),
diff --git a/components/schedule/src/schedule_rpc.erl b/components/schedule/src/schedule_rpc.erl
index 4726521..eda8153 100644
--- a/components/schedule/src/schedule_rpc.erl
+++ b/components/schedule/src/schedule_rpc.erl
@@ -130,7 +130,7 @@ schedule_message(CompSpec,
schedule_message,
[{ service, SvcName },
{ timeout, Timeout },
- { parameters, Parameters },
+ { parameters, {struct, Parameters } },
{ signature, Signature }],
[status, transaction_id], CompSpec).
diff --git a/components/service_edge/src/service_edge_rpc.erl b/components/service_edge/src/service_edge_rpc.erl
index 354f724..c2f0503 100644
--- a/components/service_edge/src/service_edge_rpc.erl
+++ b/components/service_edge/src/service_edge_rpc.erl
@@ -195,7 +195,7 @@ handle_ws_json_rpc(WSock, "message", Params, _Arg ) ->
?debug("service_edge_rpc:handle_websocket(~p) parameters: ~p", [ WSock, Parameters ]),
[ Res, TID ] = gen_server:call(?SERVER, { rvi, handle_local_message,
- [ SvcName, Timeout, [{struct, Parameters}]]}),
+ [ SvcName, Timeout, Parameters]}),
?debug("service_edge_rpc:wse_message(~p) Res: ~p", [ WSock, Res ]),
{ ok, [ { status, rvi_common:json_rpc_status(Res) },
@@ -437,7 +437,7 @@ handle_call({ rvi, handle_local_message,
?debug("service_edge_rpc:local_msg(): Service is local. Forwarding."),
Res = forward_message_to_local_service(URL,
SvcName,
- Parameters,
+ {struct, Parameters},
St#st.cs),
{ reply, Res , St};
@@ -492,6 +492,7 @@ handle_cast({rvi, handle_remote_message,
%% Check if this is a local message.
case ets:lookup(?SERVICE_TABLE, SvcName) of
[ #service_entry { url = URL }] -> %% This is a local message
+ {struct, Parameters1} = Parameters,
case authorize_rpc:authorize_remote_message(
St#st.cs,
SvcName,
@@ -500,7 +501,7 @@ handle_cast({rvi, handle_remote_message,
{service_name, SvcName},
{timeout, Timeout},
%% {parameters, [ {struct, Parameters}]},
- {parameters, Parameters},
+ {parameters, Parameters1},
{signature, Signature}]) of
[ ok ] ->
forward_message_to_local_service(URL, SvcName,
@@ -609,8 +610,8 @@ dispatch_to_local_service([ $w, $s, $: | WSPidStr], services_unavailable,
ok;
dispatch_to_local_service([ $w, $s, $: | WSPidStr], message,
- {struct, [{ service_name, SvcName},
- { parameters, { struct, Parameters} }
+ {struct, [{ service_name, SvcName },
+ { parameters, Parameters }
]} ) ->
?info("service_edge:dispatch_to_local_service(message, websock): ~p",
@@ -618,7 +619,7 @@ dispatch_to_local_service([ $w, $s, $: | WSPidStr], message,
wse_server:send(list_to_pid(WSPidStr),
json_rpc_notification("message",
[{ "service_name", SvcName},
- {parameters, { struct, Parameters}}])),
+ {parameters, Parameters}])),
%% No response expected.
?debug("service_edge:dispatch_to_local_service(message, websock): Done"),
ok;
@@ -661,7 +662,7 @@ forward_message_to_local_service(URL,SvcName, Parameters, _CompSpec) ->
dispatch_to_local_service(URL,
message,
{struct, [ { service_name, LocalSvcName },
- { parameters, { struct, Parameters }}]}))
+ { parameters, Parameters }]}))
end),
[ ok, -1 ].