on master help sign in
Move a function in dep order
commit04fef4fe4f0209689f9ee38c8699acf4c11f2a36 authorHarendra Kumar <harendra.kumar@gmail.com> dateMon 21 Aug 2017, 22:31 (9 years ago) parent09283c4
1 file changed+12−12
src/Asyncly/AsyncT.hs+12−12
src/Asyncly/AsyncT.hs+12−12
@@ -209,18 +209,6 @@ handlePushException pchan e = do
209209 tid <- myThreadId
210210 atomically $ writeTChan pchan (ChildStop tid (Just e))
211211
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−
224212{-# NOINLINE pushSideDispatch #-}
225213pushSideDispatch :: MonadAsync m
226214 => Context m a -> AsyncT m a -> AsyncT m a -> AsyncT m a
@@ -267,6 +255,18 @@ pullDispatch ctx dispatch = AsyncT $ \_ stp yld -> do
267255 -- XXX kill threads
268256 ChildStop _ e -> maybe (continue stp yld) throwM e
269257
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+
270270{-# NOINLINE pullDrain #-}
271271pullDrain :: (MonadIO m, MonadThrow m) => TChan (ChildEvent a) -> AsyncT m a
272272pullDrain chan = AsyncT $ \_ stp yld -> do