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 <[email protected]>:
> 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 [email protected]
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> [email protected]
> 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 [email protected].
> For more options, visit https://groups.google.com/d/optout.
>
--
Laurent Petit
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/d/optout.