on master help sign in
Move a function in dep order
04fef4fHarendra Kumar
src/Asyncly/AsyncT.hs+12−12
@@ -209,18 +209,6 @@ handlePushException pchan e = do
209 tid <- myThreadId
209 tid <- myThreadId
210 atomically $ writeTChan pchan (ChildStop tid (Just e))
210 atomically $ writeTChan pchan (ChildStop tid (Just e))
211
211
212−-- | run m1 in a new thread, pushing its results to a pull channel and then run
213−-- m2 in the parent thread. Any exceptions are also pushed to the channel.
214−{-# INLINE pullSideDispatch #-}
215−pullSideDispatch :: MonadAsync m
216− => Context m a -> AsyncT m a -> AsyncT m a -> AsyncT m a
217−pullSideDispatch ctx m1 m2 = AsyncT $ \_ stp yld -> do
218− let chan = childChannel ctx
219− _ <- doFork (push (ctx {pullSide = False}) m1) (handlePushException chan)
220− liftIO $ threadDelay 0
221− liftIO $ writeIORef (pendingWork ctx) m2
222− (runAsyncT (pullDispatch ctx False)) Nothing stp yld
223−
224{-# NOINLINE pushSideDispatch #-}
212{-# NOINLINE pushSideDispatch #-}
225pushSideDispatch :: MonadAsync m
213pushSideDispatch :: MonadAsync m
226 => Context m a -> AsyncT m a -> AsyncT m a -> AsyncT m a
214 => Context m a -> AsyncT m a -> AsyncT m a -> AsyncT m a
@@ -267,6 +255,18 @@ pullDispatch ctx dispatch = AsyncT $ \_ stp yld -> do
267 -- XXX kill threads
255 -- XXX kill threads
268 ChildStop _ e -> maybe (continue stp yld) throwM e
256 ChildStop _ e -> maybe (continue stp yld) throwM e
269
257
258+-- | run m1 in a new thread, pushing its results to a pull channel and then run
259+-- m2 in the parent thread. Any exceptions are also pushed to the channel.
260+{-# INLINE pullSideDispatch #-}
261+pullSideDispatch :: MonadAsync m
262+ => Context m a -> AsyncT m a -> AsyncT m a -> AsyncT m a
263+pullSideDispatch ctx m1 m2 = AsyncT $ \_ stp yld -> do
264+ let chan = childChannel ctx
265+ _ <- doFork (push (ctx {pullSide = False}) m1) (handlePushException chan)
266+ liftIO $ threadDelay 0
267+ liftIO $ writeIORef (pendingWork ctx) m2
268+ (runAsyncT (pullDispatch ctx False)) Nothing stp yld
269+
270{-# NOINLINE pullDrain #-}
270{-# NOINLINE pullDrain #-}
271pullDrain :: (MonadIO m, MonadThrow m) => TChan (ChildEvent a) -> AsyncT m a
271pullDrain :: (MonadIO m, MonadThrow m) => TChan (ChildEvent a) -> AsyncT m a
272pullDrain chan = AsyncT $ \_ stp yld -> do
272pullDrain chan = AsyncT $ \_ stp yld -> do