summaryrefslogtreecommitdiff
path: root/components/schedule
diff options
context:
space:
mode:
authorMagnus Feuer <mfeuer@jaguarlandrover.com>2014-11-10 17:19:20 -0800
committerMagnus Feuer <mfeuer@jaguarlandrover.com>2014-11-10 17:19:20 -0800
commit8fb397ef40df4335c1682a824c5efcc1e5ee2588 (patch)
tree82e61a15a774a7f941caf5c6316ab74a1a6566b8 /components/schedule
parent8f3d40ec7aaea3dca63428da3f694c3d50179053 (diff)
downloadrvi_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.erl79
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.
+