On Thu, Oct 8, 2009 at 7:49 PM, John Harrop <[email protected]> wrote:
> You might be able to do better than that, and dispense entirely with the
> separate polling thread.
>
Confirmed:
(def x (agent {:polling false :message "foo"}))
(defn poll [m]
(when (:polling m)
(prn (:message m))
(Thread/sleep 1000)
(send-off *agent* poll))
m)
(defn set-message [m mess]
(assoc m :message mess))
(defn start [m]
(send-off *agent* poll)
(assoc m :polling true))
(defn stop [m]
(assoc m :polling false))
(send-off x start)
The message "foo" should start repeating in the standard-output monitor
window of your IDE.
(send-off x set-message "bar")
The message "bar" should start repeating in the standard-output monitor
window of your IDE, in place of "foo".
(send-off x stop)
The output should stop, and look like this:
"foo"
"foo"
"foo"
"foo"
"bar"
"bar"
"bar"
with possibly different numbers of repetitions. Seems to indicate that this
strategy works beautifully for a periodically-repeating behavior that
accepts state-change messages, including start and stop signals.
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---