|
22 | 22 |
|
23 | 23 | (defn nanoseconds
|
24 | 24 | "Converts nanoseconds -> milliseconds"
|
25 |
| - [n] |
| 25 | + [^double n] |
26 | 26 | (/ n 1e6))
|
27 | 27 |
|
28 | 28 | (defn microseconds
|
29 | 29 | "Converts microseconds -> milliseconds"
|
30 |
| - [n] |
| 30 | + [^double n] |
31 | 31 | (/ n 1e3))
|
32 | 32 |
|
33 | 33 | (defn milliseconds
|
34 | 34 | "Converts milliseconds -> milliseconds"
|
35 |
| - [n] |
| 35 | + [^double n] |
36 | 36 | n)
|
37 | 37 |
|
38 | 38 | (defn seconds
|
39 | 39 | "Converts seconds -> milliseconds"
|
40 |
| - [n] |
| 40 | + [^double n] |
41 | 41 | (* n 1e3))
|
42 | 42 |
|
43 | 43 | (defn minutes
|
44 | 44 | "Converts minutes -> milliseconds"
|
45 |
| - [n] |
| 45 | + [^double n] |
46 | 46 | (* n 6e4))
|
47 | 47 |
|
48 | 48 | (defn hours
|
49 | 49 | "Converts hours -> milliseconds"
|
50 |
| - [n] |
| 50 | + [^double n] |
51 | 51 | (* n 36e5))
|
52 | 52 |
|
53 | 53 | (defn days
|
54 | 54 | "Converts days -> milliseconds"
|
55 |
| - [n] |
| 55 | + [^double n] |
56 | 56 | (* n 864e5))
|
57 | 57 |
|
58 | 58 | (defn hz
|
59 | 59 | "Converts frequency -> period in milliseconds"
|
60 |
| - [n] |
| 60 | + [^double n] |
61 | 61 | (/ 1e3 n))
|
62 | 62 |
|
63 | 63 | (let [intervals (partition 2 ["d" (days 1)
|
|
68 | 68 | (defn format-duration
|
69 | 69 | "Takes a duration in milliseconds, and returns a formatted string
|
70 | 70 | describing the interval, i.e. '5d 3h 1m'"
|
71 |
| - [n] |
| 71 | + [^double n] |
72 | 72 | (loop [s "", n n, intervals intervals]
|
73 | 73 | (if (empty? intervals)
|
74 | 74 | (if (empty? s)
|
75 | 75 | "0s"
|
76 | 76 | (str/trim s))
|
77 |
| - (let [[desc val] (first intervals)] |
| 77 | + (let [[desc ^double val] (first intervals)] |
78 | 78 | (if (>= n val)
|
79 | 79 | (recur
|
80 | 80 | (str s (int (/ n val)) desc " ")
|
|
184 | 184 | default, the initial time is `0`."
|
185 | 185 | ([]
|
186 | 186 | (mock-clock 0))
|
187 |
| - ([initial-time] |
| 187 | + ([^double initial-time] |
188 | 188 | (let [now (atom initial-time)
|
189 | 189 | events (atom (sorted-map))]
|
190 | 190 | (reify
|
191 | 191 | IClock
|
192 | 192 | (in [this interval-millis f]
|
193 |
| - (swap! events update-in [(+ @now interval-millis)] #(conj (or % []) f)) |
| 193 | + (swap! events update-in [(+ ^double @now interval-millis)] #(conj (or % []) f)) |
194 | 194 | (advance this 0))
|
195 | 195 | (every [this delay-millis period-millis f]
|
196 | 196 | (assert (< 0 period-millis))
|
|
204 | 204 | (now [_] @now)
|
205 | 205 | (advance
|
206 | 206 | [this time]
|
207 |
| - (let [limit (+ @now time)] |
| 207 | + (let [limit (+ ^double @now ^double time)] |
208 | 208 | (loop []
|
209 | 209 | (if (or (empty? @events)
|
210 |
| - (< limit (key (first @events)))) |
| 210 | + (< limit ^double (key (first @events)))) |
211 | 211 | (do
|
212 | 212 | (reset! now limit)
|
213 | 213 | nil)
|
|
217 | 217 | (reset! now t)
|
218 | 218 | (doseq [f fs]
|
219 | 219 | (let [period (some-> f meta ::period deref)]
|
220 |
| - (when (or (nil? period) (pos? period)) |
| 220 | + (when (or (nil? period) (pos? ^double period)) |
221 | 221 | (try
|
222 | 222 | (f)
|
223 | 223 | (when period (.in this period f))
|
|
281 | 281 | "Schedules no-arg function `f` to be invoked at `timestamp`, which is the milliseconds
|
282 | 282 | since the epoch. Returns a deferred representing the returned value of the function
|
283 | 283 | (unwrapped if `f` itself returns a deferred)."
|
284 |
| - [timestamp f] |
| 284 | + [^double timestamp f] |
285 | 285 | (in (max 0 (- timestamp (System/currentTimeMillis))) f))
|
0 commit comments