summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cady <d@jerkface.net>2018-06-23 20:10:30 -0400
committerAndrew Cady <d@jerkface.net>2018-06-23 20:10:30 -0400
commit87a1867f3a69a3e00be49130d54d4fff5216692b (patch)
tree269a380335ee9c2cdd9492d8cc59833c7283f809
parentc96c733c1ef60ab3bb164074b34a8c004de995cf (diff)
make sure to always fork IO run within announcers
-rw-r--r--Announcer.hs4
1 files changed, 2 insertions, 2 deletions
diff --git a/Announcer.hs b/Announcer.hs
index 370ef13a..41c1c2a6 100644
--- a/Announcer.hs
+++ b/Announcer.hs
@@ -177,10 +177,10 @@ listener announcer = relisten
177 case cmd of 177 case cmd of
178 ScheduleAction (k, p, s) -> atomically $ modifyScheduled $ PSQ.insert' k s p 178 ScheduleAction (k, p, s) -> atomically $ modifyScheduled $ PSQ.insert' k s p
179 UnscheduleAction k -> atomically $ modifyScheduled $ PSQ.delete k 179 UnscheduleAction k -> atomically $ modifyScheduled $ PSQ.delete k
180 RunAction io -> io 180 RunAction io -> void $ fork io
181 RunActionSTM k (ScheduledItem f) -> do 181 RunActionSTM k (ScheduledItem f) -> do
182 now <- getPOSIXTime 182 now <- getPOSIXTime
183 join . atomically $ modifyScheduled (PSQ.delete k) >> f announcer k now 183 void . fork . join . atomically $ modifyScheduled (PSQ.delete k) >> f announcer k now
184 DelayAction (k, p, s) -> do 184 DelayAction (k, p, s) -> do
185 now <- getPOSIXTime 185 now <- getPOSIXTime
186 atomically $ modifyScheduled $ PSQ.insert' k s (now + p) 186 atomically $ modifyScheduled $ PSQ.insert' k s (now + p)