|
1 | 1 | (ns postmortem.session |
2 | 2 | (:require [postmortem.protocols :as proto] |
3 | 3 | #?(:clj [postmortem.utils :refer [with-lock]])) |
4 | | - #?(:clj (:import [java.util.concurrent.locks ReentrantLock]))) |
| 4 | + #?@(:bb [] |
| 5 | + :clj ((:import [java.util.concurrent.locks ReentrantLock])))) |
5 | 6 |
|
6 | 7 | (defn- xf->rf |
7 | 8 | ([xform] (xf->rf xform conj)) |
|
123 | 124 | (-complete! [_ keys] |
124 | 125 | (proto/-complete! session keys))))) |
125 | 126 |
|
126 | | -#?(:clj |
| 127 | +#?(:cljs (do) |
| 128 | + :default |
| 129 | + (deftype SynchronizedSession [session lock] |
| 130 | + proto/ISession |
| 131 | + proto/ILogStorage |
| 132 | + (-add-item! [_ key xform' item] |
| 133 | + (with-lock lock |
| 134 | + (proto/-add-item! session key xform' item))) |
| 135 | + (-keys [_] |
| 136 | + (with-lock lock |
| 137 | + (proto/-keys session))) |
| 138 | + (-logs [_] |
| 139 | + (with-lock lock |
| 140 | + (proto/-logs session))) |
| 141 | + (-logs [_ keys] |
| 142 | + (with-lock lock |
| 143 | + (proto/-logs session keys))) |
| 144 | + (-reset! [_] |
| 145 | + (with-lock lock |
| 146 | + (proto/-reset! session))) |
| 147 | + (-reset! [_ keys] |
| 148 | + (with-lock lock |
| 149 | + (proto/-reset! session keys))) |
| 150 | + proto/ICompletable |
| 151 | + (-completed? [_ key] |
| 152 | + (with-lock lock |
| 153 | + (proto/-completed? session key))) |
| 154 | + (-complete! [_] |
| 155 | + (with-lock lock |
| 156 | + (proto/-complete! session))) |
| 157 | + (-complete! [_ keys] |
| 158 | + (with-lock lock |
| 159 | + (proto/-complete! session keys))))) |
| 160 | + |
| 161 | +#?(:bb |
| 162 | + (defn synchronized [session] |
| 163 | + (->SynchronizedSession session (Object.))) |
| 164 | + :clj |
127 | 165 | (defn synchronized [session] |
128 | | - (let [^ReentrantLock lock (ReentrantLock.)] |
129 | | - (reify |
130 | | - proto/ISession |
131 | | - proto/ILogStorage |
132 | | - (-add-item! [_ key xform' item] |
133 | | - (with-lock lock |
134 | | - (proto/-add-item! session key xform' item))) |
135 | | - (-keys [_] |
136 | | - (with-lock lock |
137 | | - (proto/-keys session))) |
138 | | - (-logs [_] |
139 | | - (with-lock lock |
140 | | - (proto/-logs session))) |
141 | | - (-logs [_ keys] |
142 | | - (with-lock lock |
143 | | - (proto/-logs session keys))) |
144 | | - (-reset! [_] |
145 | | - (with-lock lock |
146 | | - (proto/-reset! session))) |
147 | | - (-reset! [_ keys] |
148 | | - (with-lock lock |
149 | | - (proto/-reset! session keys))) |
150 | | - proto/ICompletable |
151 | | - (-completed? [_ key] |
152 | | - (with-lock lock |
153 | | - (proto/-completed? session key))) |
154 | | - (-complete! [_] |
155 | | - (with-lock lock |
156 | | - (proto/-complete! session))) |
157 | | - (-complete! [_ keys] |
158 | | - (with-lock lock |
159 | | - (proto/-complete! session keys))))))) |
| 166 | + (->SynchronizedSession session (ReentrantLock.)))) |
0 commit comments