@@ -20,13 +20,13 @@ module Streamly.Internal.Data.Stream.Concurrent.Channel.Dispatcher
2020 )
2121where
2222
23−import Control.Monad.Trans.Control (MonadBaseControl)
2423import Control.Concurrent (takeMVar, threadDelay)
2524import Control.Exception (assert)
2625import Control.Monad (when, void)
2726import Control.Monad.IO.Class (MonadIO(liftIO))
2827import Data.Maybe (fromJust, fromMaybe)
2928import Data.IORef (modifyIORef, newIORef, readIORef, writeIORef)
29+import Streamly.Internal.Control.Concurrent (MonadRunInIO)
3030import Streamly.Internal.Control.ForkLifted (doFork)
3131import Streamly.Internal.Data.Atomics (atomicModifyIORefCAS_, storeLoadBarrier)
3232import Streamly.Internal.Data.Time.Clock (Clock(Monotonic), getTime)
@@ -43,7 +43,7 @@ import Streamly.Internal.Data.Stream.Channel.Worker
4343-------------------------------------------------------------------------------
4444
4545{-# NOINLINE pushWorker #-}
46−pushWorker :: (MonadIO m, MonadBaseControl IO m) => Count -> Channel m a -> m ()
46+pushWorker :: MonadRunInIO m => Count -> Channel m a -> m ()
4747pushWorker yieldMax sv = do
4848 liftIO $ atomicModifyIORefCAS_ (workerCount sv) $ \n -> n + 1
4949 when (svarInspectMode sv)
@@ -130,7 +130,7 @@ checkMaxBuffer active sv = do
130130 (_, n) <- liftIO $ readIORef (outputQueue sv)
131131 return $ fromIntegral lim > n + active
132132
133−dispatchWorker :: (MonadIO m, MonadBaseControl IO m) =>
133+dispatchWorker :: MonadRunInIO m =>
134134 Count -> Channel m a -> m Bool
135135dispatchWorker yieldCount sv = do
136136 -- XXX in case of Ahead streams we should not send more than one worker
@@ -175,7 +175,7 @@ dispatchWorker yieldCount sv = do
175175-- Returns:
176176-- True: can dispatch more
177177-- False: full, no more dispatches
178−dispatchWorkerPaced :: (MonadIO m, MonadBaseControl IO m) =>
178+dispatchWorkerPaced :: MonadRunInIO m =>
179179 Channel m a -> m Bool
180180dispatchWorkerPaced sv = do
181181 let yinfo = fromJust $ yieldRateInfo sv
@@ -382,7 +382,7 @@ sendWorkerWait eagerEval delay dispatch sv = go
382382-- | Start the evaluation of the channel's work queue by kicking off a worker.
383383-- Note: Work queue must not be empty otherwise the worker will exit without
384384-- doing anything.
385−startChannel :: (MonadIO m, MonadBaseControl IO m) =>
385+startChannel :: MonadRunInIO m =>
386386 Channel m a -> m ()
387387startChannel chan = do
388388 case yieldRateInfo chan of