summaryrefslogtreecommitdiff
path: root/components/proto_json
diff options
context:
space:
mode:
authorUlf Wiger <ulf@feuerlabs.com>2015-11-05 17:29:22 +0100
committerUlf Wiger <ulf@feuerlabs.com>2015-11-20 13:47:02 -0800
commitca1f0abd9f0f1478da8380bff28cb25aada34c1d (patch)
tree814c4a3c17b247cc300f62673771dad5a5c6ed77 /components/proto_json
parent1b44c2448344a10ae63904a796b6211c40a3f212 (diff)
downloadrvi_core-ca1f0abd9f0f1478da8380bff28cb25aada34c1d.tar.gz
All tests (incl remote method inv) pass
- No signatures on messages (dlink_tls) - dlink_bt wasn't actually tested (test case passed erroneously) - added proto_msgpack component - fixed sneaky bug in 'setup'
Diffstat (limited to 'components/proto_json')
-rw-r--r--components/proto_json/src/proto_json_rpc.erl45
1 files changed, 21 insertions, 24 deletions
diff --git a/components/proto_json/src/proto_json_rpc.erl b/components/proto_json/src/proto_json_rpc.erl
index 9445965..9f7ccc0 100644
--- a/components/proto_json/src/proto_json_rpc.erl
+++ b/components/proto_json/src/proto_json_rpc.erl
@@ -22,7 +22,7 @@
-define(SERVER, ?MODULE).
-export([start_json_server/0]).
--export([send_message/9,
+-export([send_message/8,
receive_message/3]).
-record(st, {
@@ -50,8 +50,7 @@ send_message(CompSpec,
ProtoOpts,
DataLinkMod,
DataLinkOpts,
- Parameters,
- Signature) ->
+ Parameters) ->
rvi_common:request(protocol, ?MODULE, send_message,
[{ transaction_id, TID },
{ service, ServiceName },
@@ -59,9 +58,8 @@ send_message(CompSpec,
{ protocol_opts, ProtoOpts },
{ data_link_mod, DataLinkMod },
{ data_link_opts, DataLinkOpts },
- { parameters, Parameters },
- { signature, Signature }],
- [ status ], CompSpec).
+ { parameters, Parameters }],
+ [ status ], CompSpec).
receive_message(CompSpec, {IP, Port}, Data) ->
rvi_common:notification(protocol, ?MODULE, receive_message,
@@ -74,6 +72,7 @@ receive_message(CompSpec, {IP, Port}, Data) ->
%% CAlled by local exo http server
handle_rpc("send_message", Args) ->
+ LogId = rvi_common:get_json_log_id(Args),
{ok, TID} = rvi_common:get_json_element(["transaction_id"], Args),
{ok, ServiceName} = rvi_common:get_json_element(["service_name"], Args),
{ok, Timeout} = rvi_common:get_json_element(["timeout"], Args),
@@ -81,7 +80,6 @@ handle_rpc("send_message", Args) ->
{ok, DataLinkMod} = rvi_common:get_json_element(["data_link_mod"], Args),
{ok, DataLinkOpts} = rvi_common:get_json_element(["data_link_opts"], Args),
{ok, Parameters} = rvi_common:get_json_element(["parameters"], Args),
- {ok, Signature} = rvi_common:get_json_element(["signature"], Args),
[ ok ] = gen_server:call(?SERVER, { rvi, send_message,
[TID,
ServiceName,
@@ -90,7 +88,7 @@ handle_rpc("send_message", Args) ->
DataLinkMod,
DataLinkOpts,
Parameters,
- Signature]}),
+ LogId]}),
{ok, [ {status, rvi_common:json_rpc_status(ok)} ]};
@@ -101,10 +99,14 @@ handle_rpc(Other, _Args) ->
handle_notification("receive_message", Args) ->
+ LogId = rvi_common:get_json_log_id(Args),
{ok, Data} = rvi_common:get_json_element(["data"], Args),
{ok, RemoteIP} = rvi_common:get_json_element(["remote_ip"], Args),
{ok, RemotePort} = rvi_common:get_json_element(["remote_port"], Args),
- gen_server:cast(?SERVER, { rvi, receive_message, [Data, RemoteIP, RemotePort]}),
+ gen_server:cast(?SERVER, { rvi, receive_message, [Data,
+ RemoteIP,
+ RemotePort,
+ LogId]}),
ok;
handle_notification(Other, _Args) ->
@@ -119,8 +121,7 @@ handle_call({rvi, send_message,
ProtoOpts,
DataLinkMod,
DataLinkOpts,
- Parameters,
- Signature]}, _From, St) ->
+ Parameters | _LogId]}, _From, St) ->
?debug(" protocol:send(): transaction id: ~p~n", [TID]),
?debug(" protocol:send(): service name: ~p~n", [ServiceName]),
?debug(" protocol:send(): timeout: ~p~n", [Timeout]),
@@ -128,13 +129,11 @@ handle_call({rvi, send_message,
?debug(" protocol:send(): data_link_mod: ~p~n", [DataLinkMod]),
?debug(" protocol:send(): data_link_opts: ~p~n", [DataLinkOpts]),
?debug(" protocol:send(): parameters: ~p~n", [Parameters]),
- ?debug(" protocol:send(): signature: ~p~n", [Signature]),
Data = jsx:encode([
- { "tid", TID },
- { "service", ServiceName },
- { "timeout", Timeout },
- { "parameters", Parameters },
- { "signature", Signature }
+ { <<"tid">>, TID },
+ { <<"service">>, ServiceName },
+ { <<"timeout">>, Timeout },
+ { <<"parameters">>, Parameters }
]),
case use_frag(Parameters, DataLinkOpts) of
@@ -154,30 +153,28 @@ handle_call(Other, _From, St) ->
{ reply, [ invalid_command ], St}.
%% Convert list-based data to binary.
-handle_cast({rvi, receive_message, [Payload, IP, Port]} = Msg, St) ->
+handle_cast({rvi, receive_message, [Payload, IP, Port | _LogId]} = Msg, St) ->
?debug("~p:handle_cast(~p)", [?MODULE, Msg]),
- Elems = jsx:decode(Payload),
+ Elems = jsx:decode(iolist_to_binary(Payload)),
case Elems of
[{<<"frg">>, _}|_] ->
St1 = handle_frag(Elems, IP, Port, St),
{noreply, St1};
_ ->
- [ ServiceName, Timeout, Parameters, Signature ] =
- opts([<<"service">>, <<"timeout">>, <<"parameters">>, <<"signature">>],
+ [ ServiceName, Timeout, Parameters ] =
+ opts([<<"service">>, <<"timeout">>, <<"parameters">>],
Elems, undefined),
?debug(" protocol:rcv(): service name: ~p~n", [ServiceName]),
?debug(" protocol:rcv(): timeout: ~p~n", [Timeout]),
- ?debug(" protocol:rcv(): signature: ~p~n", [Signature]),
?debug(" protocol:rcv(): remote IP/Port: ~p~n", [{IP, Port}]),
service_edge_rpc:handle_remote_message(St#st.cs,
{IP, Port},
ServiceName,
Timeout,
- Parameters,
- Signature),
+ Parameters),
{noreply, St}
end;