Skip to content
Snippets Groups Projects
Commit cb31782f authored by Jens Nolte's avatar Jens Nolte
Browse files

Remove startShortIO


Co-authored-by: default avatarJan Beinke <git@janbeinke.com>
parent b8b115fc
No related branches found
No related tags found
No related merge requests found
...@@ -16,8 +16,6 @@ module Quasar.MonadQuasar ( ...@@ -16,8 +16,6 @@ module Quasar.MonadQuasar (
liftQuasarIO, liftQuasarIO,
quasarAtomically, quasarAtomically,
startShortIO_,
-- ** Utils -- ** Utils
redirectExceptionToSink, redirectExceptionToSink,
redirectExceptionToSink_, redirectExceptionToSink_,
...@@ -39,7 +37,6 @@ import Quasar.Future ...@@ -39,7 +37,6 @@ import Quasar.Future
import Quasar.Exceptions import Quasar.Exceptions
import Quasar.Prelude import Quasar.Prelude
import Quasar.Resources.Disposer import Quasar.Resources.Disposer
import Quasar.Utils.ShortIO
import Data.Bifunctor (first) import Data.Bifunctor (first)
...@@ -94,7 +91,6 @@ withResourceScope fn = bracket newResourceScope dispose (`localQuasar` fn) ...@@ -94,7 +91,6 @@ withResourceScope fn = bracket newResourceScope dispose (`localQuasar` fn)
class (MonadCatch m, MonadFix m) => MonadQuasar m where class (MonadCatch m, MonadFix m) => MonadQuasar m where
askQuasar :: m Quasar askQuasar :: m Quasar
maskIfRequired :: m a -> m a maskIfRequired :: m a -> m a
startShortIO :: ShortIO a -> m (Future a)
ensureSTM :: STM a -> m a ensureSTM :: STM a -> m a
ensureQuasarSTM :: QuasarSTM a -> m a ensureQuasarSTM :: QuasarSTM a -> m a
localQuasar :: Quasar -> m a -> m a localQuasar :: Quasar -> m a -> m a
...@@ -111,13 +107,6 @@ instance (MonadIO m, MonadMask m, MonadFix m) => MonadQuasar (QuasarT m) where ...@@ -111,13 +107,6 @@ instance (MonadIO m, MonadMask m, MonadFix m) => MonadQuasar (QuasarT m) where
askQuasar = ask askQuasar = ask
ensureSTM t = liftIO (atomically t) ensureSTM t = liftIO (atomically t)
maskIfRequired = mask_ maskIfRequired = mask_
startShortIO fn = do
exChan <- askExceptionSink
liftIO $ uninterruptibleMask_ $ try (runShortIO fn) >>= \case
Left ex -> do
atomically $ throwToExceptionSink exChan ex
pure $ throwM $ toException $ AsyncException ex
Right result -> pure $ pure result
ensureQuasarSTM = quasarAtomically ensureQuasarSTM = quasarAtomically
localQuasar quasar = local (const quasar) localQuasar quasar = local (const quasar)
...@@ -126,17 +115,6 @@ instance MonadQuasar QuasarSTM where ...@@ -126,17 +115,6 @@ instance MonadQuasar QuasarSTM where
askQuasar = QuasarSTM (asks fst) askQuasar = QuasarSTM (asks fst)
ensureSTM fn = QuasarSTM (lift fn) ensureSTM fn = QuasarSTM (lift fn)
maskIfRequired = id maskIfRequired = id
startShortIO fn = do
(quasar, effectFutureVar) <- QuasarSTM ask
let
worker = quasarIOWorker quasar
exChan = quasarExceptionSink quasar
ensureSTM do
awaitable <- startShortIOSTM fn worker exChan
-- Await in reverse order, so it is almost guaranteed this only retries once
modifyTVar effectFutureVar (awaitSuccessOrFailure awaitable *>)
pure awaitable
ensureQuasarSTM = id ensureQuasarSTM = id
localQuasar quasar (QuasarSTM fn) = QuasarSTM (local (first (const quasar)) fn) localQuasar quasar (QuasarSTM fn) = QuasarSTM (local (first (const quasar)) fn)
...@@ -148,7 +126,6 @@ instance {-# OVERLAPPABLE #-} MonadQuasar m => MonadQuasar (ReaderT r m) where ...@@ -148,7 +126,6 @@ instance {-# OVERLAPPABLE #-} MonadQuasar m => MonadQuasar (ReaderT r m) where
maskIfRequired fn = do maskIfRequired fn = do
x <- ask x <- ask
lift $ maskIfRequired (runReaderT fn x) lift $ maskIfRequired (runReaderT fn x)
startShortIO t = lift (startShortIO t)
ensureQuasarSTM t = lift (ensureQuasarSTM t) ensureQuasarSTM t = lift (ensureQuasarSTM t)
localQuasar quasar fn = do localQuasar quasar fn = do
x <- ask x <- ask
...@@ -157,9 +134,6 @@ instance {-# OVERLAPPABLE #-} MonadQuasar m => MonadQuasar (ReaderT r m) where ...@@ -157,9 +134,6 @@ instance {-# OVERLAPPABLE #-} MonadQuasar m => MonadQuasar (ReaderT r m) where
-- TODO MonadQuasar instances for StateT, WriterT, RWST, MaybeT, ... -- TODO MonadQuasar instances for StateT, WriterT, RWST, MaybeT, ...
startShortIO_ :: MonadQuasar m => ShortIO () -> m ()
startShortIO_ fn = void $ startShortIO fn
askIOWorker :: MonadQuasar m => m TIOWorker askIOWorker :: MonadQuasar m => m TIOWorker
askIOWorker = quasarIOWorker <$> askQuasar askIOWorker = quasarIOWorker <$> askQuasar
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment