Hmmm, I'm really not convinced by the answer I gave you ... I hope someone else with better xp than me with core.async (not hard !) will answer to you and correct me.
Le lundi 29 décembre 2014, Laurent PETIT <laurent.pe...@gmail.com> a écrit : > Hello, > > I'm still a newbie with core.async myself, but I'll try to answer anyway, > learning on the way ;-) > > My idea is that you could leverage alts! which can return a default value > immediately if none of the operations is "ready". I think "ready" means > "would not wait/park" (there's either a value to be read in an input > channel, or room in a channel buffer of an output channel). > > So it's not really a channel that will have the feature, but rather a > process. I guess it is easy to encapsulate the desired behaviour by hiding > the process behind a function taking the desired output channel, and > returning a channel exhibiting the encaspulated behavior: > > (defn put-or-drop-channel [target-channel] > (let [input-channel (chan)] > (go-loop > (when-let [v (<! input-channel)] > (alt! [target-channel v] nil :default nil)))) > > ? > > > > 2014-12-29 12:38 GMT+01:00 Yehonathan Sharvit <vie...@gmail.com > <javascript:_e(%7B%7D,'cvml','vie...@gmail.com');>>: > >> Hello, >> >> >> I would like to create a channel that will drop messages if no consumer >> is currently reading from the channel. >> >> Something like a channel with a dropping-buffer of size 0. >> The problem is that the API doesn't allow to create a dropping-buffer of >> size 0. >> >> >> With the following code snippet, I would like the reader to read nothing. >> >> *(def c (create-unbuffered-chan)) * >> >> *(put! c :ok)* >> >> *(go (println (<! c))); should not print anything* >> >> >> >> Your help is appreciated. >> Thanks, >> Yehonathan. >> >> -- >> You received this message because you are subscribed to the Google >> Groups "Clojure" group. >> To post to this group, send email to clojure@googlegroups.com >> <javascript:_e(%7B%7D,'cvml','clojure@googlegroups.com');> >> Note that posts from new members are moderated - please be patient with >> your first post. >> To unsubscribe from this group, send email to >> clojure+unsubscr...@googlegroups.com >> <javascript:_e(%7B%7D,'cvml','clojure%2bunsubscr...@googlegroups.com');> >> For more options, visit this group at >> http://groups.google.com/group/clojure?hl=en >> --- >> You received this message because you are subscribed to the Google Groups >> "Clojure" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to clojure+unsubscr...@googlegroups.com >> <javascript:_e(%7B%7D,'cvml','clojure%2bunsubscr...@googlegroups.com');>. >> For more options, visit https://groups.google.com/d/optout. >> > > > > -- > Laurent Petit > -- Laurent Petit -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.