<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>