summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMagnus Feuer <mfeuer@jaguarlandrover.com>2015-03-13 16:35:07 -0700
committerMagnus Feuer <mfeuer@jaguarlandrover.com>2015-03-13 16:35:50 -0700
commit48e5da3580d2f7b309c4add8ade1d72ef5289880 (patch)
tree269c8a161523c60a3c5b90e23841f20d04db854a
parent61254c198376d114bb845aabe6a99dd52b58d4dd (diff)
downloadrvi_core-48e5da3580d2f7b309c4add8ade1d72ef5289880.tar.gz
Cleaned up log messages
-rw-r--r--components/data_link_bert_rpc/src/data_link_bert_rpc_rpc.erl87
1 files changed, 65 insertions, 22 deletions
diff --git a/components/data_link_bert_rpc/src/data_link_bert_rpc_rpc.erl b/components/data_link_bert_rpc/src/data_link_bert_rpc_rpc.erl
index 7d8b2c8..48b9a0b 100644
--- a/components/data_link_bert_rpc/src/data_link_bert_rpc_rpc.erl
+++ b/components/data_link_bert_rpc/src/data_link_bert_rpc_rpc.erl
@@ -20,16 +20,16 @@
terminate/2, code_change/3]).
-include_lib("lager/include/log.hrl").
+-behavior(gen_server).
-define(DEFAULT_BERT_RPC_PORT, 9999).
-define(DEFAULT_RECONNECT_INTERVAL, 5000).
-define(DEFAULT_BERT_RPC_ADDRESS, "0.0.0.0").
-
+-define(DEFAULT_PING_INTERVAL, 300000). %% Five minutes
-define(SERVER, ?MODULE).
-record(st, { }).
-
start_link() ->
gen_server:start_link({local, ?SERVER}, ?MODULE, [], []).
@@ -157,27 +157,34 @@ setup_data_link(RemoteAddress, RemotePort, Service) ->
1, LocalAddress, LocalPort, rvi_binary,
{certificate, {}}, { signature, {}} }),
+ gen_server:call(?SERVER, { setup_initial_ping, RemoteAddress, RemotePort, Pid }),
+
{ok, [ { status, rvi_common:json_rpc_status(ok)}]};
+
{ error, _ } ->
{error, [ { status, rvi_common:json_rpc_status(not_available)}]}
end.
disconnect_data_link(RemoteAddress, RemotePort) ->
- ?info("data_link_bert:disconnect_data_link(): Remote Address: ~p", [ RemoteAddress]),
- ?info("data_link_bert:disconnect_data_link(): Remote Port: ~p", [ RemotePort]),
+ ?info("data_link_bert:disconnect_data_link(): Remote Address: ~p:~p", [ RemoteAddress, RemotePort]),
{ok, [ { status, rvi_common:json_rpc_status(ok)}]}.
send_data(RemoteAddress, RemotePort, Data) ->
- ?info("data_link_bert:send_data(): Remote Address: ~p", [ RemoteAddress]),
- ?info("data_link_bert:send_data(): Remote Port: ~p", [ RemotePort]),
+ ?info("data_link_bert:send_data(): Remote Address: ~p:~p", [ RemoteAddress, RemotePort]),
%% ?info("data_link_bert:send_data(): Data: ~p", [ Data]),
Res = connection:send(RemoteAddress, RemotePort, {receive_data, Data}),
- ?info ("data_link_bert:send_data(): bert-rpc result: ~p", [ Res ]),
+ case Res of
+ ok ->
+ ?debug ("data_link_bert:send_data(): bert-rpc result: ~p", [ Res ]);
+ _ ->
+ ?info ("data_link_bert:send_data(): bert-rpc result: ~p", [ Res ])
+ end,
+
{ok, [ { status, rvi_common:json_rpc_status(ok)}]}.
@@ -213,9 +220,7 @@ announce_local_service(Service, Availability) ->
{service_announce, 3, Availability,
[Service], { signature, {}}}),
?debug("data_link_bert:announce_local_service(~p): Res ~p",
- [ Availability, Res]),
- ok
-
+ [ Availability, Res])
end,
Addresses),
@@ -229,7 +234,9 @@ announce_local_service(Service, Availability) ->
end.
-
+handle_socket(_FromPid, PeerIP, PeerPort, data, ping, _ExtraArgs) ->
+ ?info("data_link_bert:ping(): Pinged from: ~p:~p", [ PeerIP, PeerPort]),
+ ok;
handle_socket(FromPid, PeerIP, PeerPort, data,
{ authorize,
@@ -324,6 +331,9 @@ handle_socket(FromPid, PeerIP, PeerPort, data,
[ Err ]),
ok
end,
+
+ %% Setup ping interval
+ gen_server:call(?SERVER, { setup_initial_ping, NRemoteAddress, NRemotePort, FromPid }),
ok;
handle_socket(_FromPid, RemoteIP, RemotePort, data,
@@ -332,11 +342,12 @@ handle_socket(_FromPid, RemoteIP, RemotePort, data,
available,
Services,
Signature}, _ExtraArgs) ->
- ?info("data_link_bert:service_announce(available): TransactionID: ~p", [ TransactionID ]),
- ?info("data_link_bert:service_announce(available): Remote IP: ~p", [ RemoteIP ]),
- ?info("data_link_bert:service_announce(available): Remote Port: ~p", [ RemotePort ]),
- ?info("data_link_bert:service_announce(available): Signature: ~p", [ Signature ]),
- ?info("data_link_bert:service_announce(available): Services: ~p", [ Services ]),
+ ?debug("data_link_bert:service_announce(available): Address: ~p:~p", [ RemoteIP, RemotePort ]),
+ ?debug("data_link_bert:service_announce(available): Remote Port: ~p", [ RemotePort ]),
+ ?debug("data_link_bert:service_announce(available): TransactionID: ~p", [ TransactionID ]),
+ ?debug("data_link_bert:service_announce(available): Signature: ~p", [ Signature ]),
+ ?debug("data_link_bert:service_announce(available): Service: ~p", [ Services ]),
+
%% Register the received services with all relevant components
@@ -355,11 +366,11 @@ handle_socket(_FromPid, RemoteIP, RemotePort, data,
unavailable,
Services,
Signature}, _ExtraArgs) ->
- ?info("data_link_bert:service_announce(unavailable): TransactionID: ~p", [ TransactionID ]),
- ?info("data_link_bert:service_announce(unavailable): Remote IP: ~p", [ RemoteIP ]),
- ?info("data_link_bert:service_announce(unavailable): Remote Port: ~p", [ RemotePort ]),
- ?info("data_link_bert:service_announce(unavailable): Signature: ~p", [ Signature ]),
- ?info("data_link_bert:service_announce(unavailable): Service: ~p", [ Services ]),
+ ?debug("data_link_bert:service_announce(unavailable): Address: ~p:~p", [ RemoteIP, RemotePort ]),
+ ?debug("data_link_bert:service_announce(unavailable): Remote Port: ~p", [ RemotePort ]),
+ ?debug("data_link_bert:service_announce(unavailable): TransactionID: ~p", [ TransactionID ]),
+ ?debug("data_link_bert:service_announce(unavailable): Signature: ~p", [ Signature ]),
+ ?debug("data_link_bert:service_announce(unavailable): Service: ~p", [ Services ]),
%% Register the received services with all relevant components
@@ -373,7 +384,7 @@ handle_socket(_FromPid, RemoteIP, RemotePort, data,
handle_socket(_FromPid, SetupIP, SetupPort, data,
{ receive_data, Data}, _ExtraArgs) ->
%% ?info("data_link_bert:receive_data(): ~p", [ Data ]),
- ?info("data_lnik_bert:receive_data(): SetupAddress: {~p, ~p}", [ SetupIP, SetupPort ]),
+ ?debug("data_link_bert:receive_data(): SetupAddress: {~p, ~p}", [ SetupIP, SetupPort ]),
case
rvi_common:send_component_request(protocol, receive_message,
[
@@ -387,6 +398,7 @@ handle_socket(_FromPid, SetupIP, SetupPort, data,
end,
ok;
+
handle_socket(_FromPid, SetupIP, SetupPort, data, Data, _ExtraArgs) ->
?warning("data_link_bert:unknown_data(): SetupAddress: {~p, ~p}", [ SetupIP, SetupPort ]),
?warning("data_link_bert:unknown_data(): Unknown data: ~p", [ Data]),
@@ -491,6 +503,22 @@ handle_call({rvi_call, send_data, Args}, _From, State) ->
list_to_integer(RemotePort), Data), State };
+handle_call({setup_initial_ping, Address, Port, Pid}, _From, St) ->
+ %% Create a timer to handle periodic pings.
+ {ok, ServerOpts } = rvi_common:get_component_config(data_link, bert_rpc_server, []),
+ ?info("data_link_bert_rpc_rpc:setup_ping(): ~p",
+ [ ServerOpts] ),
+
+
+ Timeout = proplists:get_value(ping_interval, ServerOpts, ?DEFAULT_PING_INTERVAL),
+
+ ?info("data_link_bert_rpc_rpc:setup_ping(): ~p:~p will be pinged every ~p msec",
+ [ Address, Port, Timeout] ),
+
+ erlang:send_after(Timeout, self(), { rvi_ping, Pid, Address, Port, Timeout }),
+
+ {reply, ok, St};
+
handle_call(Other, _From, State) ->
?warning("data_link_bert_rpc_rpc:handle_rpc(~p): unknown", [ Other ]),
{ reply, { ok, [ { status, rvi_common:json_rpc_status(invalid_command)} ]}, State}.
@@ -498,6 +526,21 @@ handle_call(Other, _From, State) ->
handle_cast(_Msg, State) ->
{noreply, State}.
+%% Ping time
+handle_info({ rvi_ping, Pid, Address, Port, Timeout}, St) ->
+
+ %% Check that connection is up
+ case connection:is_connection_up(Pid) of
+ true ->
+ ?info("data_link_bert_rpc_rpc:ping(): Pinging: ~p:~p", [Address, Port]),
+ connection:send(Pid, ping),
+ erlang:send_after(Timeout, self(), { rvi_ping, Pid, Address, Port, Timeout });
+
+ false ->
+ ok
+ end,
+ {noreply, St};
+
handle_info(_Info, State) ->
{noreply, State}.