minor cleanups, mostly formatting
This commit is contained in:
parent
391d79837f
commit
c35897b8c8
|
@ -1,7 +1,9 @@
|
||||||
(ns aging-session.memory
|
(ns aging-session.memory
|
||||||
"In-memory session storage with mortality."
|
"In-memory session storage with mortality."
|
||||||
(:require [ring.middleware.session.store :refer :all])
|
(:require
|
||||||
(:import java.util.UUID))
|
[ring.middleware.session.store :refer :all])
|
||||||
|
(:import
|
||||||
|
[java.util UUID]))
|
||||||
|
|
||||||
(defrecord SessionEntry [timestamp value])
|
(defrecord SessionEntry [timestamp value])
|
||||||
|
|
||||||
|
@ -45,7 +47,7 @@
|
||||||
|
|
||||||
(defprotocol AgingStore
|
(defprotocol AgingStore
|
||||||
(read-timestamp [store key]
|
(read-timestamp [store key]
|
||||||
"Read a session from the store and return its timestamp. If no key exists, returns nil."))
|
"Read a session from the store and return its timestamp. If no key exists, returns nil."))
|
||||||
|
|
||||||
(defrecord MemoryAgingStore [session-map refresh-on-write refresh-on-read req-count req-limit event-fns]
|
(defrecord MemoryAgingStore [session-map refresh-on-write refresh-on-read req-count req-limit event-fns]
|
||||||
AgingStore
|
AgingStore
|
||||||
|
@ -61,8 +63,8 @@
|
||||||
|
|
||||||
(write-session [_ key data]
|
(write-session [_ key data]
|
||||||
(let [key (or key (str (UUID/randomUUID)))]
|
(let [key (or key (str (UUID/randomUUID)))]
|
||||||
(swap! req-count inc) ; Increase the request count
|
(swap! req-count inc) ; Increase the request count
|
||||||
(if refresh-on-write ; Write key and and update timestamp.
|
(if refresh-on-write ; Write key and and update timestamp.
|
||||||
(swap! session-map assoc key (new-entry data))
|
(swap! session-map assoc key (new-entry data))
|
||||||
(swap! session-map write-entry key data))
|
(swap! session-map write-entry key data))
|
||||||
key))
|
key))
|
||||||
|
@ -78,13 +80,13 @@
|
||||||
(when (>= @req-count req-limit)
|
(when (>= @req-count req-limit)
|
||||||
(swap! session-map sweep-session event-fns)
|
(swap! session-map sweep-session event-fns)
|
||||||
(reset! req-count 0))
|
(reset! req-count 0))
|
||||||
(. Thread (sleep sweep-delay)) ;; sleep for 30s
|
(. Thread (sleep sweep-delay)) ;; sleep for 30s
|
||||||
(recur)))
|
(recur)))
|
||||||
|
|
||||||
(defn in-thread
|
(defn in-thread
|
||||||
"Run a function in a thread."
|
"Run a function in a thread."
|
||||||
[afn]
|
[f]
|
||||||
(.start (Thread. afn)))
|
(.start (Thread. ^Runnable f)))
|
||||||
|
|
||||||
(defn aging-memory-store
|
(defn aging-memory-store
|
||||||
"Creates an in-memory session storage engine."
|
"Creates an in-memory session storage engine."
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
(ns aging-session.event_test
|
(ns aging-session.event_test
|
||||||
(:require
|
(:require
|
||||||
[aging-session.event :as event]
|
|
||||||
[clojure.test :refer :all]
|
[clojure.test :refer :all]
|
||||||
[ring.middleware.session.store :refer :all]
|
[ring.middleware.session.store :refer :all]
|
||||||
|
[aging-session.event :as event]
|
||||||
[aging-session.memory :refer :all]))
|
[aging-session.memory :refer :all]))
|
||||||
|
|
||||||
(deftest session-expiry
|
(deftest session-expiry
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
(deftest session-expiry-by-sweep
|
(deftest session-expiry-by-sweep
|
||||||
(testing "Test session expiry sweep."
|
(testing "Test session expiry sweep."
|
||||||
(let [as (aging-memory-store
|
(let [as (aging-memory-store
|
||||||
:events [(event/expires-after 1)]
|
:events [(event/expires-after 1)]
|
||||||
:sweep-every 5
|
:sweep-every 5
|
||||||
:sweep-delay 1000)]
|
:sweep-delay 1000)]
|
||||||
(write-session as "mykey" {:foo 1})
|
(write-session as "mykey" {:foo 1})
|
||||||
|
|
Loading…
Reference in a new issue