sub

added

ns
clojure.core.async

type
function

(sub p topic ch) (sub p topic ch close?)

Subscribes a channel to a topic of a pub.

By default the channel will be closed when the source closes,
but can be determined by the close? parameter.

                user=> (def c (chan 1))
#'user/c

user=> (def sub-c (pub c :route))
#'user/sub-c

user=> (def cx (chan 1))
#'user/cx

user=> (sub sub-c :up-stream cx)
#<ManyToManyChannel clojure.core.async.impl.channels.ManyToManyChannel@526eb67f>

user=> (def cy (chan 1))
#'user/cy

user=> (sub sub-c :down-stream cy)
#<ManyToManyChannel clojure.core.async.impl.channels.ManyToManyChannel@777692ac>

user=> (go-loop [_ (<! cx)]
         (println "Got something coming up!"))
#<ManyToManyChannel clojure.core.async.impl.channels.ManyToManyChannel@49e2e0f9>

user=> (go-loop [_ (<! cy)]
         (println "Got something going down!"))
#<ManyToManyChannel clojure.core.async.impl.channels.ManyToManyChannel@33498147>

user=> (put! c {:route :up-stream :data 123})
true
Got something coming up!

user=> (put! c {:route :down-stream :data 123})
Got something going down!
true