diff options
Diffstat (limited to 'src')
| -rwxr-xr-x | src/session_sweeper.clj | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/session_sweeper.clj b/src/session_sweeper.clj new file mode 100755 index 0000000..847d504 --- /dev/null +++ b/src/session_sweeper.clj @@ -0,0 +1,19 @@ +(ns session-sweeper + (:use compojure)) + +(def *run-pruner* true) +(def *pruner-sleep-ms* (* 1000 60 5)) +(def *pruner-agent* (agent nil)) + +(defn prune-compojure-sessions! [x] + (doseq [[session-id session] @memory-sessions] + (if (< (session :expires-at) (System/currentTimeMillis)) + (dosync + (commute memory-sessions dissoc session-id)))) + (Thread/sleep *pruner-sleep-ms*) + (when *run-pruner* + (send *pruner-agent* #'prune-compojure-sessions!)) + x) + +(defn start-session-pruner! [] + (send *pruner-agent* prune-compojure-sessions!))
\ No newline at end of file |
