Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Q
quasar
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Jens Nolte
quasar
Commits
decb1e80
Commit
decb1e80
authored
3 years ago
by
Jens Nolte
Browse files
Options
Downloads
Patches
Plain Diff
Add newUniqueSTM to prelude
parent
e94dc46b
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
src/Quasar/PreludeExtras.hs
+6
-0
6 additions, 0 deletions
src/Quasar/PreludeExtras.hs
src/Quasar/ResourceManager.hs
+2
-3
2 additions, 3 deletions
src/Quasar/ResourceManager.hs
with
8 additions
and
3 deletions
src/Quasar/PreludeExtras.hs
+
6
−
0
View file @
decb1e80
...
@@ -8,6 +8,7 @@ import Prelude
...
@@ -8,6 +8,7 @@ import Prelude
import
Control.Applicative
(
liftA2
)
import
Control.Applicative
(
liftA2
)
import
Control.Concurrent
(
threadDelay
)
import
Control.Concurrent
(
threadDelay
)
import
Control.Concurrent.STM
import
Control.Monad.Catch
(
MonadThrow
,
throwM
)
import
Control.Monad.Catch
(
MonadThrow
,
throwM
)
import
Control.Monad.State.Lazy
as
State
import
Control.Monad.State.Lazy
as
State
import
Data.Char
qualified
as
Char
import
Data.Char
qualified
as
Char
...
@@ -16,6 +17,8 @@ import Data.HashSet qualified as HS
...
@@ -16,6 +17,8 @@ import Data.HashSet qualified as HS
import
Data.Hashable
qualified
as
Hashable
import
Data.Hashable
qualified
as
Hashable
import
Data.List
qualified
as
List
import
Data.List
qualified
as
List
import
Data.Maybe
qualified
as
Maybe
import
Data.Maybe
qualified
as
Maybe
import
Data.Unique
(
Unique
,
newUnique
)
import
GHC.Conc
(
unsafeIOToSTM
)
import
GHC.Stack.Types
qualified
import
GHC.Stack.Types
qualified
import
Quasar.Utils.ExtraT
import
Quasar.Utils.ExtraT
...
@@ -129,3 +132,6 @@ unlessM :: Monad m => m Bool -> m () -> m ()
...
@@ -129,3 +132,6 @@ unlessM :: Monad m => m Bool -> m () -> m ()
unlessM
condM
acc
=
do
unlessM
condM
acc
=
do
cond
<-
condM
cond
<-
condM
unless
cond
acc
unless
cond
acc
newUniqueSTM
::
STM
Unique
newUniqueSTM
=
unsafeIOToSTM
newUnique
This diff is collapsed.
Click to expand it.
src/Quasar/ResourceManager.hs
+
2
−
3
View file @
decb1e80
...
@@ -49,7 +49,6 @@ import Data.HashMap.Strict qualified as HM
...
@@ -49,7 +49,6 @@ import Data.HashMap.Strict qualified as HM
import
Data.List.NonEmpty
(
NonEmpty
(
..
),
(
<|
),
nonEmpty
)
import
Data.List.NonEmpty
(
NonEmpty
(
..
),
(
<|
),
nonEmpty
)
import
Data.Sequence
(
Seq
(
..
),
(
|>
))
import
Data.Sequence
(
Seq
(
..
),
(
|>
))
import
Data.Sequence
qualified
as
Seq
import
Data.Sequence
qualified
as
Seq
import
GHC.Conc
(
unsafeIOToSTM
)
import
Quasar.Async.Unmanaged
import
Quasar.Async.Unmanaged
import
Quasar.Awaitable
import
Quasar.Awaitable
import
Quasar.Disposable
import
Quasar.Disposable
...
@@ -330,7 +329,7 @@ instance IsResourceManager DefaultResourceManager where
...
@@ -330,7 +329,7 @@ instance IsResourceManager DefaultResourceManager where
attachDisposable
self
disposable
=
liftIO
$
atomically
$
attachDisposableSTM
self
disposable
attachDisposable
self
disposable
=
liftIO
$
atomically
$
attachDisposableSTM
self
disposable
attachDisposableSTM
DefaultResourceManager
{
stateVar
,
disposablesVar
}
disposable
=
do
attachDisposableSTM
DefaultResourceManager
{
stateVar
,
disposablesVar
}
disposable
=
do
key
<-
unsafeIOToSTM
newUnique
key
<-
newUnique
STM
state
<-
readTVar
stateVar
state
<-
readTVar
stateVar
case
state
of
case
state
of
ResourceManagerNormal
->
do
ResourceManagerNormal
->
do
...
@@ -462,7 +461,7 @@ defaultResourceManagerDisposeResult DefaultResourceManager{resourceManagerKey, r
...
@@ -462,7 +461,7 @@ defaultResourceManagerDisposeResult DefaultResourceManager{resourceManagerKey, r
-- to implement the root resource manager.
-- to implement the root resource manager.
newUnmanagedDefaultResourceManagerInternal
::
ResourceManager
->
STM
DefaultResourceManager
newUnmanagedDefaultResourceManagerInternal
::
ResourceManager
->
STM
DefaultResourceManager
newUnmanagedDefaultResourceManagerInternal
parentResourceManager
=
do
newUnmanagedDefaultResourceManagerInternal
parentResourceManager
=
do
resourceManagerKey
<-
unsafeIOToSTM
newUnique
resourceManagerKey
<-
newUnique
STM
stateVar
<-
newTVar
ResourceManagerNormal
stateVar
<-
newTVar
ResourceManagerNormal
disposablesVar
<-
newTMVar
HM
.
empty
disposablesVar
<-
newTMVar
HM
.
empty
lockVar
<-
newTVar
0
lockVar
<-
newTVar
0
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment