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

Add runQuasarSTM and execForeignQuasarSTM

parent c85ed867
No related branches found
No related tags found
No related merge requests found
...@@ -13,6 +13,7 @@ module Quasar.MonadQuasar ( ...@@ -13,6 +13,7 @@ module Quasar.MonadQuasar (
withQuasarGeneric, withQuasarGeneric,
runQuasarIO, runQuasarIO,
runQuasarSTM,
liftQuasarIO, liftQuasarIO,
quasarAtomically, quasarAtomically,
...@@ -166,6 +167,11 @@ liftQuasarIO fn = do ...@@ -166,6 +167,11 @@ liftQuasarIO fn = do
runQuasarIO :: MonadIO m => Quasar -> QuasarIO a -> m a runQuasarIO :: MonadIO m => Quasar -> QuasarIO a -> m a
runQuasarIO quasar fn = liftIO $ runReaderT fn quasar runQuasarIO quasar fn = liftIO $ runReaderT fn quasar
{-# SPECIALIZE runQuasarIO :: Quasar -> QuasarIO a -> IO a #-}
runQuasarSTM :: MonadSTM m => Quasar -> QuasarSTM a -> m a
runQuasarSTM quasar (QuasarSTM fn) = liftSTM $ runReaderT fn quasar
{-# SPECIALIZE runQuasarSTM :: Quasar -> QuasarSTM a -> STM a #-}
quasarAtomically :: (MonadQuasar m, MonadIO m) => QuasarSTM a -> m a quasarAtomically :: (MonadQuasar m, MonadIO m) => QuasarSTM a -> m a
quasarAtomically (QuasarSTM fn) = do quasarAtomically (QuasarSTM fn) = do
......
...@@ -34,9 +34,8 @@ execForeignQuasarIO quasar fn = runQuasarIO quasar $ ...@@ -34,9 +34,8 @@ execForeignQuasarIO quasar fn = runQuasarIO quasar $
awaitSuccessOrFailure awaitSuccessOrFailure
{-# SPECIALIZE execForeignQuasarIO :: Quasar -> QuasarIO () -> IO () #-} {-# SPECIALIZE execForeignQuasarIO :: Quasar -> QuasarIO () -> IO () #-}
execForeignQuasarSTM :: MonadQuasar m => Quasar -> QuasarSTM () -> m () execForeignQuasarSTM :: MonadSTM m => Quasar -> QuasarSTM () -> m ()
execForeignQuasarSTM quasar fn = ensureQuasarSTM $ localQuasar quasar $ redirectExceptionToSink_ fn execForeignQuasarSTM quasar fn = liftSTM $ runQuasarSTM quasar $ redirectExceptionToSink_ fn
{-# SPECIALIZE execForeignQuasarSTM :: Quasar -> QuasarSTM () -> QuasarIO () #-}
{-# SPECIALIZE execForeignQuasarSTM :: Quasar -> QuasarSTM () -> QuasarSTM () #-} {-# SPECIALIZE execForeignQuasarSTM :: Quasar -> QuasarSTM () -> QuasarSTM () #-}
......
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