(def latest (ref nil)) (def changelists (channel)) (receive-all changelists (fn [changelist] (dosync (ref-set latest changelist)))) (defn request-handler [ch request] (let [last-serial (-> request :body :last-serial) src (dosync (if (and @latest (> (:serial latest) last-serial)) (sealed-channel @latest) (take* 1 changelists)))] (siphon (map* create-http-response src) ch)))