diff options
author | Magnus Feuer <mfeuer@jaguarlandrover.com> | 2014-11-10 17:19:20 -0800 |
---|---|---|
committer | Magnus Feuer <mfeuer@jaguarlandrover.com> | 2014-11-10 17:19:20 -0800 |
commit | 8fb397ef40df4335c1682a824c5efcc1e5ee2588 (patch) | |
tree | 82e61a15a774a7f941caf5c6316ab74a1a6566b8 /components/schedule | |
parent | 8f3d40ec7aaea3dca63428da3f694c3d50179053 (diff) | |
download | rvi_core-8fb397ef40df4335c1682a824c5efcc1e5ee2588.tar.gz |
All components now accept genserver calls.
Signed-off-by: Magnus Feuer <mfeuer@jaguarlandrover.com>
Diffstat (limited to 'components/schedule')
-rw-r--r-- | components/schedule/src/schedule.erl | 79 |
1 files changed, 60 insertions, 19 deletions
diff --git a/components/schedule/src/schedule.erl b/components/schedule/src/schedule.erl index b55a1cd..b110e8e 100644 --- a/components/schedule/src/schedule.erl +++ b/components/schedule/src/schedule.erl @@ -8,6 +8,7 @@ -module(schedule). + -behaviour(gen_server). -include_lib("lager/include/log.hrl"). @@ -109,10 +110,10 @@ schedule_message(SvcName, }). register_remote_services(NetworkAddress, AvailableServices) -> - gen_server:cast(?SERVER, { register_remote_services, NetworkAddress, AvailableServices }). + gen_server:call(?SERVER, { register_remote_services, NetworkAddress, AvailableServices }). unregister_remote_services(ServiceNames) -> - gen_server:cast(?SERVER, { unregister_remote_services, ServiceNames }). + gen_server:call(?SERVER, { unregister_remote_services, ServiceNames }). %%-------------------------------------------------------------------- %% @private @@ -139,11 +140,11 @@ handle_call( { schedule_message, ?info("schedule:sched_msg(): service_name: ~p", [SvcName]), ?info("schedule:sched_msg(): timeout: ~p", [Timeout]), - ?info("schedule:sched_msg(): callback: ~p", [Callback]), -%% ?info("schedule:sched_msg(): parameters: ~p", [Parameters]), - ?info("schedule:sched_msg(): signature: ~p", [Signature]), - ?info("schedule:sched_msg(): certificate: ~p", [Certificate]), - ?info("schedule:sched_msg(): St: ~p", [St]), + ?debug("schedule:sched_msg(): callback: ~p", [Callback]), + ?debug("schedule:sched_msg(): parameters: ~p", [Parameters]), + ?debug("schedule:sched_msg(): signature: ~p", [Signature]), + ?debug("schedule:sched_msg(): certificate: ~p", [Certificate]), + ?debug("schedule:sched_msg(): St: ~p", [St]), { ok, TransID, NSt } = queue_message(SvcName, @@ -156,6 +157,57 @@ handle_call( { schedule_message, { reply, {ok, TransID}, NSt }; +handle_call({rvi_call, schedule_message, Args}, From, St) -> + {_, SvcName} = lists:keyfind(service_name, 1, Args), + {_, Timeout} = lists:keyfind(timeout, 1, Args), + {_, Parameters} = lists:keyfind(parameters, 1, Args), + {_, Signature} = lists:keyfind(signature, 1, Args), + {_, Certificate} = lists:keyfind(certificate, 1, Args), + { reply, { ok, TransID}, NSt} = + handle_call( { schedule_message, + SvcName, + Timeout, + no_callback, + Parameters, + Signature, + Certificate + }, From, St), + { reply, { ok, [ + { status, rvi_common:json_rpc_status(ok)}, + { transaction_id, TransID }]}, NSt}; + + + + +handle_call( {register_remote_services, NetworkAddress, AvailableServices}, _From, St) -> + ?info("schedule:register_remote_services(): NetworkAddress: ~p", [NetworkAddress]), + ?info("schedule:register_remote_services(): AvailableService: ~p", [AvailableServices]), + {ok, NSt} = multiple_services_available(AvailableServices, NetworkAddress, St), + {reply, ok, NSt}; + + +handle_call({rvi_call, register_remote_services, Args}, From, St) -> + {_, NetworkAddress } = lists:keyfind(network_address, 1, Args), + {_, AvailableServices } = lists:keyfind(services, 1, Args), + {reply, ok, NSt } = handle_call({ register_remote_services, + NetworkAddress, + AvailableServices}, From, St), + + { reply, { ok, [{ status, rvi_common:json_rpc_status(ok) }] } , NSt}; + +handle_call( {unregister_remote_services, ServiceNames}, _From, St) -> + ?info("schedule:unregister_remote_services(): Services: ~p", [ServiceNames]), + {ok, NSt} = multiple_services_unavailable(ServiceNames, St), + {reply, ok, NSt }; + +handle_call({rvi_call, unregister_remote_services, Args}, From, St) -> + {_, Services } = lists:keyfind(services, 1, Args), + {reply, ok, NSt} = handle_call({ unregister_remote_services, Services}, From, St), + { reply, { ok, [{ status, rvi_common:json_rpc_status(ok) } ]}, NSt}; + + + + handle_call(_Request, _From, St) -> Reply = ok, {reply, Reply, St}. @@ -172,18 +224,6 @@ handle_call(_Request, _From, St) -> %% @end %%-------------------------------------------------------------------- -handle_cast( {register_remote_services, NetworkAddress, AvailableServices}, St) -> - ?info("schedule:register_remote_services(): NetworkAddress: ~p", [NetworkAddress]), - ?info("schedule:register_remote_services(): AvailableService: ~p", [AvailableServices]), - {ok, NSt} = multiple_services_available(AvailableServices, NetworkAddress, St), - {noreply, NSt}; - - -handle_cast( {unregister_remote_services, ServiceNames}, St) -> - ?info("schedule:unregister_remote_services(): Services: ~p", [ServiceNames]), - {ok, NSt} = multiple_services_unavailable(ServiceNames, St), - {noreply, NSt }; - handle_cast(_Msg, St) -> {noreply, St}. @@ -602,3 +642,4 @@ do_timeout_callback(Service, #message { timeout_cb = { M, F, A}, %% callback element of #message is not an {M,F,A} format, ignore. do_timeout_callback(_,_) -> ok. + |