/
jobs.clj
45 lines (35 loc) · 1.7 KB
/
jobs.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
(ns dirac.nrepl.jobs
(:require [clojure.tools.logging :as log]
[dirac.lib.utils :as utils]
[dirac.nrepl.state :refer [observed-jobs]]))
; -- helpers ----------------------------------------------------------------------------------------------------------------
(defn get-observed-job [nrepl-message]
(get @observed-jobs (:id nrepl-message)))
(defn observed-job? [nrepl-message]
(some? (get-observed-job nrepl-message)))
(defn make-observed-job [job-id original-id interested-session interested-transport]
{:id job-id
:original-id original-id
:interested-session interested-session
:interested-transport interested-transport})
(defn get-observed-job-session [observed-job]
(:interested-session observed-job))
(defn get-observed-job-transport [observed-job]
(:interested-transport observed-job))
(defn get-observed-job-id [observed-job]
(:id observed-job))
(defn get-observed-job-message-id [observed-job]
(:original-id observed-job))
(defn register-observed-job! [job-id original-id interested-session interested-transport timeout-ms]
(log/debug "register-observed-job!"
(str "job-id=" job-id)
(str "original-message-id=" original-id)
(str "timeout=" timeout-ms))
(log/trace original-id timeout-ms (utils/pp interested-session) interested-transport)
; TODO: implement timeouts
(swap! observed-jobs assoc job-id (make-observed-job job-id original-id interested-session interested-transport)))
(defn unregister-observed-job! [job-id]
(log/debug "unregister-observed-job!"
(str "job-id=" job-id))
(log/trace (utils/pp (get @observed-jobs job-id)))
(swap! observed-jobs dissoc job-id))