This commit is contained in:
Gered 2016-05-17 15:23:29 -04:00
parent 96b39a83d4
commit 028157cfa7
2 changed files with 8 additions and 26 deletions

View file

@ -597,30 +597,19 @@
;; when the client never connects with a backchannel ;; when the client never connects with a backchannel
(send-off session-agent refresh-session-timeout) (send-off session-agent refresh-session-timeout)
;; register application-level browserchannel session events ;; register application-level browserchannel session events
(let [{:keys [on-open on-close on-receive]} events (let [middleware (get-middleware-handler-map
middleware (get-middleware-handler-map (:middleware options) [:on-open :on-close :on-receive])] (:middleware options)
[:on-open :on-close :on-receive])]
(add-listener! (add-listener!
id :close id :close
(fn [session-id request reason] (fn [session-id request reason]
(run-middleware (run-middleware (:on-close middleware) (:on-close events) session-id request reason)))
(:on-close middleware)
(fn [session-id request reason]
(if on-close (on-close session-id request reason)))
session-id request reason)))
(add-listener! (add-listener!
id :map id :map
(fn [session-id request data] (fn [session-id request data]
(run-middleware (run-middleware (:on-receive middleware) (:on-receive events) session-id request data)))
(:on-receive middleware)
(fn [session-id request data]
(if on-receive (on-receive session-id request data)))
session-id request data)))
; on-open is just triggered right now, no listener necessary ; on-open is just triggered right now, no listener necessary
(run-middleware (run-middleware (:on-open middleware) (:on-open events) id req))
(:on-open middleware)
(fn [session-id request]
(if on-open (on-open session-id request)))
id req))
session-agent))) session-agent)))
(defn- session-status (defn- session-status

View file

@ -6,20 +6,13 @@
(if f (if f
(recur (f handler) more) (recur (f handler) more)
handler)) handler))
handler (wrap final-handler middleware)] handler (wrap (or final-handler (fn [& _])) middleware)]
(apply handler args))) (apply handler args)))
(defn get-handlers
[middleware k]
(->> middleware
(map k)
(remove nil?)
(doall)))
(defn get-middleware-handler-map (defn get-middleware-handler-map
[middleware handler-ks] [middleware handler-ks]
(reduce (reduce
(fn [m k] (fn [m k]
(assoc m k (get-handlers middleware k))) (assoc m k (->> middleware (map k) (remove nil?))))
{} {}
handler-ks)) handler-ks))