This repository has been archived by the owner on Jan 6, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 206
/
extensions.cljc
79 lines (51 loc) · 2.09 KB
/
extensions.cljc
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
(ns onyx.extensions
"Extension interfaces for internally used queues, logs,
and distributed coordination.")
;; Replica interface
(defmulti apply-log-entry (fn [entry replica] (:fn entry)))
(defmulti replica-diff (fn [entry old new] (:fn entry)))
(defmulti fire-side-effects!
(fn [entry old new diff state]
(assert (:fn entry))
(assert (#{:client :peer :group} (:type state)))
[(:fn entry) (:type state)]))
(defmulti reactions
(fn [entry old new diff state]
(assert (:fn entry))
(assert (#{:client :peer :group} (:type state)))
[(:fn entry) (:type state)]))
(defmethod reactions :default
[_ _ _ _ _]
[])
(defmethod fire-side-effects! :default
[_ old new _ state]
(assert (or (not= (:type state) :peer)
(= (:allocations old)
(:allocations new)))
"fire-side-effects! fell through to default erroneously when peers should reallocate.")
state)
;; Peer replica view interface
(defmulti new-task-state!
(fn [log entry old-replica new-replica diff state task-state opts]
:default))
;; Log interface
(defmulti write-log-entry (fn [log data] (type log)))
(defmulti read-log-entry (fn [log position] (type log)))
(defmulti register-pulse (fn [log id] (type log)))
(defmulti group-exists? (fn [log id] (type log)))
(defmulti on-delete (fn [log id ch] (type log)))
(defmulti subscribe-to-log (fn [log ch] (type log)))
(defmulti job-status (fn [log tenancy-id job-id] (type log)))
(defmulti write-chunk (fn [log kw chunk id] [(type log) kw]))
(defmulti force-write-chunk (fn [log kw chunk id] [(type log) kw]))
(defmulti read-chunk (fn [log kw id & args] [(type log) kw]))
(defmulti write-job-name-metadata (fn [log chunk job-name] [(type log)]))
(defmulti read-job-name-metadata (fn [log job-name position] [(type log)]))
(defmulti update-origin! (fn [log replica message-id] (type log)))
(defmulti gc-log-entry (fn [log position] (type log)))
(defmulti connected? (fn [log] (type log)))
;; Monitoring interface
(defmulti monitoring-agent :monitoring)
(defprotocol IEmitEvent
(registered? [_ event-type])
(emit [_ event]))