diff --git a/src/Quasar/Resources/Disposer.hs b/src/Quasar/Resources/Disposer.hs index a29ae246fc57d4c935037ba11dfaf8436b0e8a89..9d44e42e0b6bc65a79d04aa50a7db173151cd0bd 100644 --- a/src/Quasar/Resources/Disposer.hs +++ b/src/Quasar/Resources/Disposer.hs @@ -44,6 +44,16 @@ class Resource a where isDisposing r = isDisposing (toDisposer r) + +newtype Disposer = Disposer [DisposerElement] + deriving newtype (Semigroup, Monoid) + +instance Resource Disposer where + toDisposer = id + isDisposed (Disposer ds) = foldMap isDisposed ds + isDisposing (Disposer ds) = awaitAny $ isDisposing <$> ds + + type DisposerState = TOnce DisposeFn (Future ()) data DisposerElement @@ -60,15 +70,6 @@ instance Resource DisposerElement where isDisposing (ResourceManagerDisposer resourceManager) = resourceManagerIsDisposing resourceManager -newtype Disposer = Disposer [DisposerElement] - deriving newtype (Semigroup, Monoid) - -instance Resource Disposer where - toDisposer = id - isDisposed (Disposer ds) = foldMap isDisposed ds - isDisposing (Disposer ds) = awaitAny $ isDisposing <$> ds - - type DisposeFn = ShortIO (Future ())