summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsostler <sbostler@gmail.com>2010-02-24 08:12:13 -0500
committersostler <sbostler@gmail.com>2010-02-24 08:12:13 -0500
commit3a44ede0d5c1aff3cdd6102ece91df1403f6d14a (patch)
tree886df6de98b0685379f1f1f3aaf5da5fc42f87e2
parent8003ba27e49a630b24090f3af01426f35e85af67 (diff)
Added session_sweeper
-rwxr-xr-xsrc/session_sweeper.clj19
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