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
(send-off session-agent refresh-session-timeout)
;; register application-level browserchannel session events
(let [{:keys [on-open on-close on-receive]} events
middleware (get-middleware-handler-map (:middleware options) [:on-open :on-close :on-receive])]
(let [middleware (get-middleware-handler-map
(:middleware options)
[:on-open :on-close :on-receive])]
(add-listener!
id :close
(fn [session-id request reason]
(run-middleware
(:on-close middleware)
(fn [session-id request reason]
(if on-close (on-close session-id request reason)))
session-id request reason)))
(run-middleware (:on-close middleware) (:on-close events) session-id request reason)))
(add-listener!
id :map
(fn [session-id request data]
(run-middleware
(:on-receive middleware)
(fn [session-id request data]
(if on-receive (on-receive session-id request data)))
session-id request data)))
(run-middleware (:on-receive middleware) (:on-receive events) session-id request data)))
; on-open is just triggered right now, no listener necessary
(run-middleware
(:on-open middleware)
(fn [session-id request]
(if on-open (on-open session-id request)))
id req))
(run-middleware (:on-open middleware) (:on-open events) id req))
session-agent)))
(defn- session-status

View file

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