diff options
author | Magnus Feuer <mfeuer@jaguarlandrover.com> | 2015-03-13 16:35:07 -0700 |
---|---|---|
committer | Magnus Feuer <mfeuer@jaguarlandrover.com> | 2015-03-13 16:35:50 -0700 |
commit | 48e5da3580d2f7b309c4add8ade1d72ef5289880 (patch) | |
tree | 269c8a161523c60a3c5b90e23841f20d04db854a | |
parent | 61254c198376d114bb845aabe6a99dd52b58d4dd (diff) | |
download | rvi_core-48e5da3580d2f7b309c4add8ade1d72ef5289880.tar.gz |
Cleaned up log messages
-rw-r--r-- | components/data_link_bert_rpc/src/data_link_bert_rpc_rpc.erl | 87 |
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}. |