summaryrefslogtreecommitdiff
path: root/src/session_sweeper.clj
blob: 847d5045e4344143f37bd94a0ad3233fd49739d9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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!))