diff options
author | Magnus Feuer <mfeuer@jaguarlandrover.com> | 2015-09-23 11:25:34 -0700 |
---|---|---|
committer | Magnus Feuer <mfeuer@jaguarlandrover.com> | 2015-09-23 11:25:34 -0700 |
commit | ff78205abe7c50c3c0b2ce35ee8bb09e3f172502 (patch) | |
tree | 05a11b10b9db6625150d516a28935b733f81660c /components | |
parent | 29365b45d1911d42cae9ca7fb9f05829d77c4bb7 (diff) | |
download | rvi_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.erl | 4 | ||||
-rw-r--r-- | components/schedule/src/schedule_rpc.erl | 2 | ||||
-rw-r--r-- | components/service_edge/src/service_edge_rpc.erl | 15 |
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 ]. |