diff --git a/src/Quasar/Async/V2.hs b/src/Quasar/Async/V2.hs index 0a10cc1e7bf94f021bb78ee302edd34f9a61e095..f159f464a6e22a7db02a51f1138f285ae2bb800e 100644 --- a/src/Quasar/Async/V2.hs +++ b/src/Quasar/Async/V2.hs @@ -73,7 +73,7 @@ asyncWithUnmask' fn = maskIfRequired do resultVar <- newAsyncVarSTM threadIdVar <- newAsyncVarSTM -- Disposer is created first to ensure the resource can be safely attached - disposer <- newPrimitiveDisposer (disposeFn key resultVar (toAwaitable threadIdVar)) worker exChan + disposer <- newUnmanagedPrimitiveDisposer (disposeFn key resultVar (toAwaitable threadIdVar)) worker exChan pure (key, resultVar, threadIdVar, disposer) registerResource disposer diff --git a/src/Quasar/Resources.hs b/src/Quasar/Resources.hs index 33fd4b4078a8265833bdbe2f2752c52f1ba7befa..5ac6be860a1d3a5490aa525920309f2aded3cfd0 100644 --- a/src/Quasar/Resources.hs +++ b/src/Quasar/Resources.hs @@ -24,8 +24,8 @@ module Quasar.Resources ( -- * Types to implement resources -- ** Disposer Disposer, - newIODisposerSTM, - newSTMDisposerSTM, + newUnmanagedIODisposerSTM, + newUnmanagedSTMDisposerSTM, -- ** Resource manager ResourceManager, @@ -46,11 +46,11 @@ import Quasar.Resources.Disposer import Quasar.Utils.ShortIO -newIODisposerSTM :: IO () -> TIOWorker -> ExceptionChannel -> STM Disposer -newIODisposerSTM fn worker exChan = newPrimitiveDisposer (forkAsyncShortIO fn exChan) worker exChan +newUnmanagedIODisposerSTM :: IO () -> TIOWorker -> ExceptionChannel -> STM Disposer +newUnmanagedIODisposerSTM fn worker exChan = newUnmanagedPrimitiveDisposer (forkAsyncShortIO fn exChan) worker exChan -newSTMDisposerSTM :: STM () -> TIOWorker -> ExceptionChannel -> STM Disposer -newSTMDisposerSTM fn worker exChan = newPrimitiveDisposer disposeFn worker exChan +newUnmanagedSTMDisposerSTM :: STM () -> TIOWorker -> ExceptionChannel -> STM Disposer +newUnmanagedSTMDisposerSTM fn worker exChan = newUnmanagedPrimitiveDisposer disposeFn worker exChan where disposeFn :: ShortIO (Awaitable ()) disposeFn = unsafeShortIO $ atomically $ @@ -69,7 +69,7 @@ registerDisposeAction fn = do exChan <- askExceptionChannel rm <- askResourceManager ensureSTM do - disposer <- newIODisposerSTM fn worker exChan + disposer <- newUnmanagedIODisposerSTM fn worker exChan attachResource rm disposer pure disposer @@ -82,7 +82,7 @@ registerDisposeTransaction fn = do exChan <- askExceptionChannel rm <- askResourceManager ensureSTM do - disposer <- newSTMDisposerSTM fn worker exChan + disposer <- newUnmanagedSTMDisposerSTM fn worker exChan attachResource rm disposer pure disposer diff --git a/src/Quasar/Resources/Disposer.hs b/src/Quasar/Resources/Disposer.hs index 0db63b06d8bc0d4c8987cda459ad9a4b32090b58..c4e97a1a19e399bcc568bca37d3bc93e0b53d5be 100644 --- a/src/Quasar/Resources/Disposer.hs +++ b/src/Quasar/Resources/Disposer.hs @@ -8,7 +8,7 @@ module Quasar.Resources.Disposer ( disposeEventuallySTM_, isDisposing, isDisposed, - newPrimitiveDisposer, + newUnmanagedPrimitiveDisposer, -- * Resource manager ResourceManager, @@ -49,8 +49,8 @@ instance Resource Disposer where type DisposeFn = ShortIO (Awaitable ()) -newPrimitiveDisposer :: ShortIO (Awaitable ()) -> TIOWorker -> ExceptionChannel -> STM Disposer -newPrimitiveDisposer fn worker exChan = do +newUnmanagedPrimitiveDisposer :: ShortIO (Awaitable ()) -> TIOWorker -> ExceptionChannel -> STM Disposer +newUnmanagedPrimitiveDisposer fn worker exChan = do key <- newUniqueSTM FnDisposer key worker exChan <$> newTOnce fn <*> newFinalizers diff --git a/src/Quasar/Timer.hs b/src/Quasar/Timer.hs index e0d6973ff3264110037b596990f3a069bcfec59c..a05e6f8db478f2e7f15591f7d0cffe4946f4f39e 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 <- newSTMDisposerSTM (disposeFn completed) (ioWorker scheduler) (exceptionChannel scheduler) + disposer <- newUnmanagedSTMDisposerSTM (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)