150 lines
11 KiB
HTML
150 lines
11 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="not-tracked" title="0 out of 0 forms covered">
|
|
002 "copied from [Jahfer's clj-activitypub library](https://github.com/jahfer/clj-activitypub).
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
003 If and when Jahfer issues a release of that library, this directory will be deleted and a
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
004 dependency on that library will be added to the project.")
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
005
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
006 (defn- current-time
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
007 "Returns current time using UNIX epoch."
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
008 []
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
009 (System/currentTimeMillis))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
010
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
011 (defn- update-read-at [store k v]
|
|
</span><br/>
|
|
<span class="covered" title="2 out of 2 forms covered">
|
|
012 (dosync
|
|
</span><br/>
|
|
<span class="covered" title="5 out of 5 forms covered">
|
|
013 (commute store assoc k
|
|
</span><br/>
|
|
<span class="covered" title="7 out of 7 forms covered">
|
|
014 (merge v {:read-at (current-time)}))))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
015
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
016 (defn make
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
017 "Creates a thread-local cache."
|
|
</span><br/>
|
|
<span class="covered" title="3 out of 3 forms covered">
|
|
018 ([] (make false))
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
019 ([cache-if-nil]
|
|
</span><br/>
|
|
<span class="covered" title="4 out of 4 forms covered">
|
|
020 (let [store (ref {})]
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
021 (letfn [(cache-kv ([k v]
|
|
</span><br/>
|
|
<span class="covered" title="2 out of 2 forms covered">
|
|
022 (dosync
|
|
</span><br/>
|
|
<span class="covered" title="5 out of 5 forms covered">
|
|
023 (commute store assoc k
|
|
</span><br/>
|
|
<span class="covered" title="6 out of 6 forms covered">
|
|
024 {:write-at (current-time)
|
|
</span><br/>
|
|
<span class="covered" title="2 out of 2 forms covered">
|
|
025 :read-at (current-time)
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
026 :value v})
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
027 v)))
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
028 (get-v ([k]
|
|
</span><br/>
|
|
<span class="covered" title="11 out of 11 forms covered">
|
|
029 (when-let [data (get @store k)]
|
|
</span><br/>
|
|
<span class="covered" title="5 out of 5 forms covered">
|
|
030 (update-read-at store k data)
|
|
</span><br/>
|
|
<span class="covered" title="3 out of 3 forms covered">
|
|
031 (:value data)))
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
032 ([k compute-fn]
|
|
</span><br/>
|
|
<span class="covered" title="4 out of 4 forms covered">
|
|
033 (let [storage @store]
|
|
</span><br/>
|
|
<span class="covered" title="5 out of 5 forms covered">
|
|
034 (if (contains? storage k)
|
|
</span><br/>
|
|
<span class="covered" title="3 out of 3 forms covered">
|
|
035 (get-v k)
|
|
</span><br/>
|
|
<span class="covered" title="3 out of 3 forms covered">
|
|
036 (let [v (compute-fn)]
|
|
</span><br/>
|
|
<span class="partial" title="11 out of 12 forms covered">
|
|
037 (when (or (not (nil? v)) cache-if-nil)
|
|
</span><br/>
|
|
<span class="covered" title="4 out of 4 forms covered">
|
|
038 (cache-kv k v)
|
|
</span><br/>
|
|
<span class="covered" title="3 out of 3 forms covered">
|
|
039 (get-v k)))))))
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
040 (lru ([]
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 2 forms covered">
|
|
041 (mapv
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 6 forms covered">
|
|
042 (fn [[k v]] [k (:value v)])
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 12 forms covered">
|
|
043 (sort-by #(-> % val :read-at) < @store))))]
|
|
</span><br/>
|
|
<span class="covered" title="6 out of 6 forms covered">
|
|
044 {:cache-kv cache-kv
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
045 :get-v get-v
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
046 :cache-if-nil cache-if-nil
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
047 :lru lru}))))
|
|
</span><br/>
|
|
</body>
|
|
</html>
|