| 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. | 


