diff options
author | Andrew Cady <d@jerkface.net> | 2018-06-23 20:10:30 -0400 |
---|---|---|
committer | Andrew Cady <d@jerkface.net> | 2018-06-23 20:10:30 -0400 |
commit | 87a1867f3a69a3e00be49130d54d4fff5216692b (patch) | |
tree | 269a380335ee9c2cdd9492d8cc59833c7283f809 | |
parent | c96c733c1ef60ab3bb164074b34a8c004de995cf (diff) |
make sure to always fork IO run within announcers
-rw-r--r-- | Announcer.hs | 4 |
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) |