summaryrefslogtreecommitdiff |
diff options
author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-11-29 03:50:59 +0100 |
---|---|---|
committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-11-29 03:50:59 +0100 |
commit | 759c05470e33cc25ced5b47aa181f1ca79181ac8 (patch) | |
tree | dc3da695bad67ccf025f0350216f6358f08b6a22 /src/io/timed_caches_manager.erl | |
parent | 02da4adf9ae6b477376bb27a092feec06a3f2b91 (diff) |
Adds owners to caches items, allowing for pings.
Diffstat (limited to 'src/io/timed_caches_manager.erl')
-rw-r--r-- | src/io/timed_caches_manager.erl | 71 |
1 files changed, 40 insertions, 31 deletions
diff --git a/src/io/timed_caches_manager.erl b/src/io/timed_caches_manager.erl index 21f2b6b..5901964 100644 --- a/src/io/timed_caches_manager.erl +++ b/src/io/timed_caches_manager.erl @@ -24,17 +24,17 @@ %%%% Actual Interface -export( [ - add_cache/3, - inherit_cache/3, + start/0, + new_cache/3, delete_cache/2, - get_timeout/1 + get_timeout/0 ] ) . %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -delete_cache (DB) -> +remove_cache (DB) -> ets:delete(DB). add_cache (DB, none) -> @@ -74,6 +74,29 @@ inherit_cache (CacheList, DB, Heir) -> [DB|CacheList] end. +remove_cache (CacheList, DB) -> + case lists:member(DB, CacheList) of + true -> + remove_cache(DB), + lists:delete(DB, CacheList); + false -> + CacheList + end. + +add_cache (CacheList, DB, Heir) -> + case lists:member(DB, CacheList) of + true when (Heir =:= none) -> + CacheList; + + true -> + ets:setopts(DB, {heir, Heir, DB}), + CacheList; + + false -> + add_cache(DB, Heir), + [DB|CacheList] + end. + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -82,8 +105,8 @@ init (CacheList) -> io:format("~nStarting Timed Caches Manager..."), {ok, CacheList}. -handle_call ({delete, CacheName}, _Caller, State) -> - {noreply, delete_cache(State, CacheName)}; +handle_call ({remove, CacheName}, _Caller, State) -> + {noreply, remove_cache(State, CacheName)}; handle_call ({add, CacheName, Heir}, _Caller, State)-> {noreply, add_cache(State, CacheName, Heir)}; handle_call ({inherit, CacheName, Heir}, _Caller, State)-> @@ -91,8 +114,8 @@ handle_call ({inherit, CacheName, Heir}, _Caller, State)-> handle_call (terminate, _, State) -> {stop, normal, State}. -handle_cast ({delete, CacheName}, State) -> - {noreply, delete_cache(State, CacheName)}; +handle_cast ({remove, CacheName}, State) -> + {noreply, remove_cache(State, CacheName)}; handle_cast ({add, CacheName, Heir}, State)-> {noreply, add_cache(State, CacheName, Heir)}; handle_cast ({inherit, CacheName, Heir}, State)-> @@ -103,7 +126,7 @@ handle_cast (terminate, State) -> terminate (_Reason, []) -> ok; terminate (Reason, [CacheName|OtherCaches]) -> - delete_cache(CacheName), + remove_cache(CacheName), terminate(Reason, OtherCaches). code_change (_, State, _) -> @@ -116,28 +139,14 @@ handle_info(_, State) -> {noreply, State}. %%%% Interface Functions -delete_cache (CacheList, DB) -> - case lists:member(DB, CacheList) of - true -> - delete_cache(DB), - lists:delete(DB, CacheList); - false -> - CacheList - end. +start () -> + gen_server:start(timed_caches_manager, [], []). -add_cache (CacheList, DB, Heir) -> - case lists:member(DB, CacheList) of - true when (Heir =:= none) -> - CacheList; - - true -> - ets:setopts(DB, {heir, Heir, DB}), - CacheList; +new_cache (ManagerPid, DB, Heir) -> + gen_server:cast(ManagerPid, {add, DB, Heir}). - false -> - add_cache(DB, Heir), - [DB|CacheList] - end. +delete_cache (ManagerPid, DB) -> + gen_server:cast(ManagerPid, {remove, DB}). -get_timeout(_) -> - 300000. % 5min. +get_timeout () -> + 120000. % 2min. |