summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordumpfmprod <dumpfmprod@ubuntu.(none)>2010-02-24 08:12:36 -0500
committerdumpfmprod <dumpfmprod@ubuntu.(none)>2010-02-24 08:12:36 -0500
commitd1f1322c889c4c7db8401e5b8568b8f97a3ab860 (patch)
tree733e29fc0e205f93ef24ed93595c9359d43348a6 /src
parent7b9c7f610974c56f13e05387c1f5ff9d7ca16ad0 (diff)
parent3e469cfa4dc440fc8fba92b629837306eb4b21b5 (diff)
Merge branch 'master' of /pichat/repo
Diffstat (limited to 'src')
-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