summaryrefslogtreecommitdiff |
diff options
author | nsensfel <SpamShield0@noot-noot.org> | 2017-11-08 16:47:17 +0100 |
---|---|---|
committer | nsensfel <SpamShield0@noot-noot.org> | 2017-11-08 16:47:17 +0100 |
commit | 40d1bb3db6651f65417ce5cd1c85f176afe92eb4 (patch) | |
tree | 3944ddc4646476ccf696f1a72fd2dc73a1a86699 /src/timed_cache_manager.erl | |
parent | dd51a1d2b2d05192b3d3022f3065b9d2d9f561c1 (diff) |
Turns the caches manager into a gen_server.
Diffstat (limited to 'src/timed_cache_manager.erl')
-rw-r--r-- | src/timed_cache_manager.erl | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/src/timed_cache_manager.erl b/src/timed_cache_manager.erl deleted file mode 100644 index 45b013c..0000000 --- a/src/timed_cache_manager.erl +++ /dev/null @@ -1,76 +0,0 @@ --module(timed_cache_manager). --export( - [ - new/2, - start/1, - fetch/2 - ] -). -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% LOCAL %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%% Manager %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -manager_core_loop (DB) -> - receive - terminate -> ets:delete(DB) - end. - -new_database (DB) -> - ets:new( - DB, - [ - set, - public, - {keypos, 1}, - {read_concurrency, true} - ] - ). - -%%%% Timer %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -timer_cleanup (DB, ObjectID) -> - ets:delete(DB, ObjectID). - -timer_core_loop (DB, ObjectID, Timeout) -> - receive - ok -> timer_core_loop(DB, ObjectID, Timeout); - terminate -> ok - after Timeout -> - timer_cleanup(DB, ObjectID) - end. - -add_timer (DB, ObjectID, Timeout) -> - spawn(timed_cache_manager, timer_core_loop, [DB, ObjectID, Timeout]). - -add_to_cache (DB, ObjectID) -> - TimerPID = add_timer(DB, ObjectID, 60000), - Data = nothing, %% Do the actual NoSQL Fetch here. - ets:insert(DB, {ObjectID, TimerPID, Data}), - Data. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTED %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -new (Manager, DB) -> - register( - Manager, - spawn( - timed_cache_manager, - start, - [DB] - ) - ). - -start (DB) -> - new_database(DB), - manager_core_loop(DB). - -fetch (DB, ObjectID) -> - case ets:lookup(DB, ObjectID) of - [] -> - add_to_cache(DB, ObjectID); - - [{_, TimerPID, Data}] -> - TimerPID ! ok, - Data - end. |