@@ -53,8 +53,6 @@ import Data.Sequence (Seq)
53import Data.Tuple
53import Data.Tuple
54import qualified Data.TagMap as TagMap
54import qualified Data.TagMap as TagMap
58-- | A function that fires events for the given 'EventTrigger's and then runs
56-- | A function that fires events for the given 'EventTrigger's and then runs
59-- any followup actions provided via 'PerformEvent'. The given 'ReadPhase'
57-- any followup actions provided via 'PerformEvent'. The given 'ReadPhase'
60-- action will be run once for the initial trigger execution as well as once for
58-- action will be run once for the initial trigger execution as well as once for
@@ -185,8 +183,8 @@ hostPerformEventT :: forall t m a.
185 -> m (a, FireCommand t m)
183 -> m (a, FireCommand t m)
186hostPerformEventT a = do
184hostPerformEventT a = do
187 (response, responseTrigger) <- newEventWithTriggerRef
185 (response, responseTrigger) <- newEventWithTriggerRef
188− (result, eventToPerform) <- runHostFrame $ runRequesterT (unPerformEventT a) $ traceEventWith (const "response") response
186+ (result, eventToPerform) <- runHostFrame $ runRequesterT (unPerformEventT a) response
189− eventToPerformHandle <- subscribeEvent $ traceEventWith (const "eventToPerform") eventToPerform
187+ eventToPerformHandle <- subscribeEvent eventToPerform
190 return $ (,) result $ FireCommand $ \triggers (readPhase :: ReadPhase m a') -> do
188 return $ (,) result $ FireCommand $ \triggers (readPhase :: ReadPhase m a') -> do
191 let go :: [DSum (EventTrigger t) Identity] -> m [a']
189 let go :: [DSum (EventTrigger t) Identity] -> m [a']
192 go ts = do
190 go ts = do
@@ -197,20 +195,13 @@ hostPerformEventT a = do
197 case mToPerform of
195 case mToPerform of
198 Nothing -> return [result']
196 Nothing -> return [result']
199 Just toPerform -> do
197 Just toPerform -> do
200− traceM $ "toPerform: " <> case toPerform of
201− RequestData _ reqs -> show (length reqs)
202 responses <- runHostFrame $ traverseRequesterData (Identity <$>) toPerform
198 responses <- runHostFrame $ traverseRequesterData (Identity <$>) toPerform
203 let responseLength = case responses of
199 let responseLength = case responses of
204 ResponseData _ m -> TagMap.size m
200 ResponseData _ m -> TagMap.size m
205− traceM $ "responses: " <> show responseLength
206 mrt <- readRef responseTrigger
201 mrt <- readRef responseTrigger
207 let followupEventTriggers = case mrt of
202 let followupEventTriggers = case mrt of
210− [rt :=> Identity responses]
203+ Just rt -> [rt :=> Identity responses]
211− Nothing -> do
204+ Nothing -> []
214 (result':) <$> go followupEventTriggers
205 (result':) <$> go followupEventTriggers
215 go triggers
206 go triggers