Observer seam for dispatched events.
The event registry holds ONE handler per event id. Observers are the extension point for cross-cutting side effects that must not own, replace or know about that handler.
Extend by implementing IEventObserver — EventIdObserver (a fixed set of
event ids) and GlobalObserver (every event) are supplied; a consumer may
register any other implementation.
Contract: observers run AFTER the handler's effects have been applied, in observer-id order, and each is isolated — an observer that throws is logged and never propagates to the handler or to sibling observers.
Observer seam for dispatched events. The event registry holds ONE handler per event id. Observers are the extension point for cross-cutting side effects that must not own, replace or know about that handler. Extend by implementing IEventObserver — `EventIdObserver` (a fixed set of event ids) and `GlobalObserver` (every event) are supplied; a consumer may register any other implementation. Contract: observers run AFTER the handler's effects have been applied, in observer-id order, and each is isolated — an observer that throws is logged and never propagates to the handler or to sibling observers.
(clear-observers!)Deregister every observer. Returns nil.
Deregister every observer. Returns nil.
(observer-id this)Unique id for this observer. Registering the same id twice replaces it.
Unique id for this observer. Registering the same id twice replaces it.
(observes? this event-id)True when this observer should be notified of event-id.
True when this observer should be notified of `event-id`.
(on-event this context)Side effect for an observed event. Return value is ignored.
Side effect for an observed event. Return value is ignored.
(notify! event-id context)Notify every registered observer of event-id, passing context.
Each observer is isolated: a throw is logged and swallowed.
Returns the number of observers notified.
Notify every registered observer of `event-id`, passing `context`. Each observer is isolated: a throw is logged and swallowed. Returns the number of observers notified.
(observers)Map of registered {observer-id observer}.
Map of registered {observer-id observer}.
(on-any-event id f)Observer of every dispatched event. f is (fn [context] ...).
Observer of every dispatched event. `f` is (fn [context] ...).
(on-events id event-ids f)Observer of event-ids only. f is (fn [context] ...).
Observer of `event-ids` only. `f` is (fn [context] ...).
(register-observer! observer)Register observer, replacing any observer with the same id.
Returns its id.
Register `observer`, replacing any observer with the same id. Returns its id.
(remove-observer! id)Deregister the observer registered under id. Returns nil.
Deregister the observer registered under `id`. Returns nil.
(select-observers observer-map event-id)Observers in observer-map that observe event-id, ordered by observer-id.
Pure.
Observers in `observer-map` that observe `event-id`, ordered by observer-id. Pure.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |