diff --git a/src/Quasar/Resources.hs b/src/Quasar/Resources.hs index 888ebc5fd7231467bfa1cb2492a9f71036ed742a..32c1ef1c90d165162e198afd7b84f3ba89221df9 100644 --- a/src/Quasar/Resources.hs +++ b/src/Quasar/Resources.hs @@ -20,8 +20,8 @@ module Quasar.Resources ( -- * Types to implement resources -- ** Disposer Disposer, - newIODisposer, - newSTMDisposer, + newIODisposerSTM, + newSTMDisposerSTM, -- ** Resource manager ResourceManager, @@ -42,11 +42,11 @@ import Quasar.Resources.Disposer import Quasar.Utils.ShortIO -newIODisposer :: IO () -> TIOWorker -> ExceptionChannel -> STM Disposer -newIODisposer fn worker exChan = newPrimitiveDisposer (forkAsyncShortIO fn exChan) worker exChan +newIODisposerSTM :: IO () -> TIOWorker -> ExceptionChannel -> STM Disposer +newIODisposerSTM fn worker exChan = newPrimitiveDisposer (forkAsyncShortIO fn exChan) worker exChan -newSTMDisposer :: STM () -> TIOWorker -> ExceptionChannel -> STM Disposer -newSTMDisposer fn worker exChan = newPrimitiveDisposer disposeFn worker exChan +newSTMDisposerSTM :: STM () -> TIOWorker -> ExceptionChannel -> STM Disposer +newSTMDisposerSTM fn worker exChan = newPrimitiveDisposer disposeFn worker exChan where disposeFn :: ShortIO (Awaitable ()) disposeFn = unsafeShortIO $ atomically $ @@ -64,14 +64,14 @@ registerDisposeAction fn = do worker <- askIOWorker exChan <- askExceptionChannel rm <- askResourceManager - ensureSTM $ attachResource rm =<< newIODisposer fn worker exChan + ensureSTM $ attachResource rm =<< newIODisposerSTM fn worker exChan registerDisposeTransaction :: MonadQuasar m => STM () -> m () registerDisposeTransaction fn = do worker <- askIOWorker exChan <- askExceptionChannel rm <- askResourceManager - ensureSTM $ attachResource rm =<< newSTMDisposer fn worker exChan + ensureSTM $ attachResource rm =<< newSTMDisposerSTM fn worker exChan registerNewResource :: forall a m. (Resource a, MonadQuasar m) => m a -> m a registerNewResource fn = do diff --git a/src/Quasar/Timer.hs b/src/Quasar/Timer.hs index 133b03a0f8d8c1a036ba505b73c44f75f958e850..e0d6973ff3264110037b596990f3a069bcfec59c 100644 --- a/src/Quasar/Timer.hs +++ b/src/Quasar/Timer.hs @@ -180,7 +180,7 @@ newUnmanagedTimer scheduler time = liftIO do key <- newUnique completed <- newAsyncVar atomically do - disposer <- newSTMDisposer (disposeFn completed) (ioWorker scheduler) (exceptionChannel scheduler) + disposer <- newSTMDisposerSTM (disposeFn completed) (ioWorker scheduler) (exceptionChannel scheduler) let timer = Timer { key, time, completed, disposer, scheduler } tryTakeTMVar (heap scheduler) >>= \case Just timers -> putTMVar (heap scheduler) (insert timer timers)