summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2017-11-08 16:47:17 +0100
committernsensfel <SpamShield0@noot-noot.org>2017-11-08 16:47:17 +0100
commit40d1bb3db6651f65417ce5cd1c85f176afe92eb4 (patch)
tree3944ddc4646476ccf696f1a72fd2dc73a1a86699 /src/timed_cache_manager.erl
parentdd51a1d2b2d05192b3d3022f3065b9d2d9f561c1 (diff)
Turns the caches manager into a gen_server.
Diffstat (limited to 'src/timed_cache_manager.erl')
-rw-r--r--src/timed_cache_manager.erl76
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.