diff options
author | Magnus Feuer <mfeuer@jaguarlandrover.com> | 2015-04-12 19:21:15 -0700 |
---|---|---|
committer | Magnus Feuer <mfeuer@jaguarlandrover.com> | 2015-04-12 19:21:15 -0700 |
commit | 8ebbdfd75de1d34c16557122da3a6cd6bbb2fa41 (patch) | |
tree | aac6ee5c52477b72a59580aa97ebdc836eb78fcd /components/schedule | |
parent | e2510c9b4cc4c05ec8cde673a040d2fa0f530cd7 (diff) | |
download | rvi_core-8ebbdfd75de1d34c16557122da3a6cd6bbb2fa41.tar.gz |
Fixed service discovery
Diffstat (limited to 'components/schedule')
-rw-r--r-- | components/schedule/src/schedule_rpc.erl | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/components/schedule/src/schedule_rpc.erl b/components/schedule/src/schedule_rpc.erl index bb62419..a558d27 100644 --- a/components/schedule/src/schedule_rpc.erl +++ b/components/schedule/src/schedule_rpc.erl @@ -108,8 +108,12 @@ start_link() -> %%-------------------------------------------------------------------- init([]) -> %% Setup the relevant ets tables. + %% Unsubscribe from service availablility notifications + CS = rvi_common:get_component_specification(), + + service_discovery_rpc:subscribe(CS, ?MODULE), {ok, #st{ - cs = rvi_common:get_component_specification(), + cs = CS, services_tid = ets:new(rvi_schedule_services, [ set, private, { keypos, #service.key } ])}}. @@ -258,7 +262,8 @@ handle_cast( {rvi, service_available, [SvcName, DataLinkModule]}, St) -> %% Find or create the service. ?debug("sched:service_available(): ~p:~p", [ DataLinkModule, SvcName ]), - + + %% Create a new or update an existing service. SvcRec = update_service(SvcName, DataLinkModule, available, St), %% Try to send any pending messages. @@ -600,7 +605,7 @@ find_or_create_service(SvcName, DataLinkMod, #st { services_tid = SvcTid } = St) %% revord. %% update_service(SvcName, DataLinkMod, Available, - #st { services_tid = SvcsTid, cs = CS }) -> + #st { services_tid = SvcsTid }) -> %% Return new service and existing state. ?debug("sched:create_service(): ~p:~s ", [ DataLinkMod, SvcName]), SvcRec = #service { @@ -613,10 +618,6 @@ update_service(SvcName, DataLinkMod, Available, %% Insert new service to ets table. ets:insert(SvcsTid, SvcRec), - - %% Subscribe to updates on the availbility of this service. - service_discovery_rpc:subscribe(CS, SvcName, DataLinkMod), - SvcRec. @@ -672,10 +673,6 @@ delete_unused_service(SvcTid, SvcRec) -> ets:delete(SvcRec#service.messages_tid), ets:delete(SvcTid, SvcRec#service.key), - { SvcName, DataLinkMod} = SvcRec#service.key, - %% Unsubscribe from service availablility notifications - service_discovery_rpc: - unsubscribe_to_service_availability(SvcName, DataLinkMod, ?MODULE), %% Update the network address, if it differs, and return %% the new service / State as {ok, NSvcRec, false, NSt} ?debug("sched:service_unavailable(): Service ~p:~p now has no address.", |