Skip to content

Instantly share code, notes, and snippets.

@mccraigmccraig
Created May 11, 2018 07:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mccraigmccraig/b67a64439a0372b50d641cc96cddd0ef to your computer and use it in GitHub Desktop.
Save mccraigmccraig/b67a64439a0372b50d641cc96cddd0ef to your computer and use it in GitHub Desktop.
(require '[clojure.core.async :refer [to-chan]])
(require '[manifold.stream :as stream])
(require '[prpr.stream.cross :as stream.cross])
(def c1 (to-chan [{:id 2 :value "a"} {:id 3} {:id 4}]))
(def c2 (to-chan [{:id 1} {:id 2 :value "b"} {:id 3}]))
(def c3 (to-chan [{:id 0} {:id 1} {:id 2 :value "c"}]))
(def cs1 (stream/->source c1))
(def cs2 (stream/->source c2))
(def cs3 (stream/->source c3))
(def ss1 (stream.cross/event-source->sorted-stream :id cs1))
(def ss2 (stream.cross/event-source->sorted-stream :id cs2))
(def ss3 (stream.cross/event-source->sorted-stream :id cs3))
(def result (stream.cross/set-streams-union {:default-key-fn :id
:skey-streams {:ss1 ss1
:ss2 ss2
:ss3 ss3}}))
@(stream/take! @result)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment