141 lines
10 KiB
HTML
141 lines
10 KiB
HTML
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<link rel="stylesheet" href="../../coverage.css"/> <title> clj_activitypub/internal/thread_cache.clj </title>
|
|
</head>
|
|
<body>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
001 (ns clj-activitypub.internal.thread-cache)
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
002
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
003 (defn- current-time
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
004 "Returns current time using UNIX epoch."
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
005 []
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
006 (System/currentTimeMillis))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
007
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
008 (defn- update-read-at [store k v]
|
|
</span><br/>
|
|
<span class="covered" title="2 out of 2 forms covered">
|
|
009 (dosync
|
|
</span><br/>
|
|
<span class="covered" title="5 out of 5 forms covered">
|
|
010 (commute store assoc k
|
|
</span><br/>
|
|
<span class="covered" title="7 out of 7 forms covered">
|
|
011 (merge v {:read-at (current-time)}))))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
012
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
013 (defn make
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
014 "Creates a thread-local cache."
|
|
</span><br/>
|
|
<span class="covered" title="3 out of 3 forms covered">
|
|
015 ([] (make false))
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
016 ([cache-if-nil]
|
|
</span><br/>
|
|
<span class="covered" title="4 out of 4 forms covered">
|
|
017 (let [store (ref {})]
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
018 (letfn [(cache-kv ([k v]
|
|
</span><br/>
|
|
<span class="covered" title="2 out of 2 forms covered">
|
|
019 (dosync
|
|
</span><br/>
|
|
<span class="covered" title="5 out of 5 forms covered">
|
|
020 (commute store assoc k
|
|
</span><br/>
|
|
<span class="covered" title="6 out of 6 forms covered">
|
|
021 {:write-at (current-time)
|
|
</span><br/>
|
|
<span class="covered" title="2 out of 2 forms covered">
|
|
022 :read-at (current-time)
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
023 :value v})
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
024 v)))
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
025 (get-v ([k]
|
|
</span><br/>
|
|
<span class="covered" title="11 out of 11 forms covered">
|
|
026 (when-let [data (get @store k)]
|
|
</span><br/>
|
|
<span class="covered" title="5 out of 5 forms covered">
|
|
027 (update-read-at store k data)
|
|
</span><br/>
|
|
<span class="covered" title="3 out of 3 forms covered">
|
|
028 (:value data)))
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
029 ([k compute-fn]
|
|
</span><br/>
|
|
<span class="covered" title="4 out of 4 forms covered">
|
|
030 (let [storage @store]
|
|
</span><br/>
|
|
<span class="covered" title="5 out of 5 forms covered">
|
|
031 (if (contains? storage k)
|
|
</span><br/>
|
|
<span class="covered" title="3 out of 3 forms covered">
|
|
032 (get-v k)
|
|
</span><br/>
|
|
<span class="covered" title="3 out of 3 forms covered">
|
|
033 (let [v (compute-fn)]
|
|
</span><br/>
|
|
<span class="partial" title="11 out of 12 forms covered">
|
|
034 (when (or (not (nil? v)) cache-if-nil)
|
|
</span><br/>
|
|
<span class="covered" title="4 out of 4 forms covered">
|
|
035 (cache-kv k v)
|
|
</span><br/>
|
|
<span class="covered" title="3 out of 3 forms covered">
|
|
036 (get-v k)))))))
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
037 (lru ([]
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 2 forms covered">
|
|
038 (mapv
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 6 forms covered">
|
|
039 (fn [[k v]] [k (:value v)])
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 12 forms covered">
|
|
040 (sort-by #(-> % val :read-at) < @store))))]
|
|
</span><br/>
|
|
<span class="covered" title="6 out of 6 forms covered">
|
|
041 {:cache-kv cache-kv
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
042 :get-v get-v
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
043 :cache-if-nil cache-if-nil
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
044 :lru lru}))))
|
|
</span><br/>
|
|
</body>
|
|
</html>
|