From 41313498c9d8ee3a7e3359491bc5d5a3ee8ccf89 Mon Sep 17 00:00:00 2001
From: Jens Nolte <git@queezle.net>
Date: Sat, 19 Mar 2022 18:10:12 +0100
Subject: [PATCH] Rename newQuasar to newResourceScope to match
 withResourceScope

---
 src/Quasar/MonadQuasar.hs | 27 ++++++++++++---------------
 src/Quasar/Resources.hs   |  4 ++--
 2 files changed, 14 insertions(+), 17 deletions(-)

diff --git a/src/Quasar/MonadQuasar.hs b/src/Quasar/MonadQuasar.hs
index 29c4d93..21ef395 100644
--- a/src/Quasar/MonadQuasar.hs
+++ b/src/Quasar/MonadQuasar.hs
@@ -1,8 +1,8 @@
 module Quasar.MonadQuasar (
   -- * Quasar
   Quasar,
-  newQuasar,
-  newQuasarSTM,
+  newResourceScope,
+  newResourceScopeSTM,
   withResourceScope,
 
   MonadQuasar(..),
@@ -67,28 +67,25 @@ quasarExceptionSink (Quasar _ exChan _) = exChan
 quasarResourceManager :: Quasar -> ResourceManager
 quasarResourceManager (Quasar _ _ rm) = rm
 
-newQuasarSTM :: TIOWorker -> ExceptionSink -> ResourceManager -> STM Quasar
-newQuasarSTM worker parentExChan parentRM = do
-  rm <- newUnmanagedResourceManagerSTM worker parentExChan
-  attachResource parentRM rm
+newResourceScopeSTM :: Quasar -> STM Quasar
+newResourceScopeSTM parent = do
+  rm <- newUnmanagedResourceManagerSTM worker parentExceptionSink
+  attachResource (quasarResourceManager parent) rm
   pure $ Quasar worker (ExceptionSink (disposeOnException rm)) rm
   where
+    worker = quasarIOWorker parent
+    parentExceptionSink = quasarExceptionSink parent
     disposeOnException :: ResourceManager -> SomeException -> STM ()
     disposeOnException rm ex = do
       disposeEventuallySTM_ rm
-      throwToExceptionSink parentExChan ex
+      throwToExceptionSink parentExceptionSink ex
 
-newQuasar :: MonadQuasar m => m Quasar
-newQuasar = do
-  worker <- askIOWorker
-  exChan <- askExceptionSink
-  parentRM <- askResourceManager
-  ensureSTM $ newQuasarSTM worker exChan parentRM
+newResourceScope :: MonadQuasar m => m Quasar
+newResourceScope = ensureSTM . newResourceScopeSTM =<< askQuasar
 
 
 withResourceScope :: (MonadQuasar m, MonadIO m, MonadMask m) => m a -> m a
-withResourceScope fn = bracket newQuasar dispose (`localQuasar` fn)
-
+withResourceScope fn = bracket newResourceScope dispose (`localQuasar` fn)
 
 
 class (MonadCatch m, MonadFix m) => MonadQuasar m where
diff --git a/src/Quasar/Resources.hs b/src/Quasar/Resources.hs
index b5c8de4..035b193 100644
--- a/src/Quasar/Resources.hs
+++ b/src/Quasar/Resources.hs
@@ -117,7 +117,7 @@ disposeEventually_ res = ensureSTM $ disposeEventuallySTM_ res
 
 captureResources :: MonadQuasar m => m a -> m (a, Disposer)
 captureResources fn = do
-  quasar <- newQuasar
+  quasar <- newResourceScope
   localQuasar quasar do
     result <- fn
     pure (result, getDisposer (quasarResourceManager quasar))
@@ -129,5 +129,5 @@ captureResources_ fn = snd <$> captureResources fn
 -- | Runs the computation in a new resource scope, which is disposed when an exception happenes. When the computation succeeds, resources are kept.
 disposeOnError :: (MonadQuasar m, MonadIO m, MonadMask m) => m a -> m a
 disposeOnError fn = mask \unmask -> do
-  quasar <- newQuasar
+  quasar <- newResourceScope
   unmask (localQuasar quasar fn) `onError` dispose quasar
-- 
GitLab