Skip to content

Commit

Permalink
Merge #3654
Browse files Browse the repository at this point in the history
3654: io-classes: added strict versions of traceTVar & traceTMVar r=coot a=coot



Co-authored-by: Marcin Szamotulski <coot@coot.me>
  • Loading branch information
iohk-bors[bot] and coot authored Mar 8, 2022
2 parents eec2ff7 + b47fd3c commit 1bdce8b
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -577,7 +577,7 @@ withConnectionManager ConnectionManagerArguments {
<- atomically $ do
v <- newTMVar Map.empty
labelTMVar v "cm-state"
traceTMVar (Proxy :: Proxy m) (toLazyTMVar v)
traceTMVar (Proxy :: Proxy m) v
$ \old new ->
case (old, new) of
(Nothing, _) -> pure DontTrace
Expand Down
35 changes: 34 additions & 1 deletion strict-stm/src/Control/Monad/Class/MonadSTM/Strict.hs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ module Control.Monad.Class.MonadSTM.Strict
, StrictTVar
, labelTVar
, labelTVarIO
, traceTVar
, traceTVarIO
, castStrictTVar
, toLazyTVar
, fromLazyTVar
Expand All @@ -32,6 +34,8 @@ module Control.Monad.Class.MonadSTM.Strict
, StrictTMVar
, labelTMVar
, labelTMVarIO
, traceTMVar
, traceTMVarIO
, castStrictTMVar
, toLazyTMVar
, fromLazyTMVar
Expand Down Expand Up @@ -59,7 +63,8 @@ module Control.Monad.Class.MonadSTM.Strict

import Control.Monad.Class.MonadSTM as X hiding (LazyTMVar, LazyTVar,
TMVar, TVar, isEmptyTMVar, labelTMVar, labelTMVarIO,
labelTVar, labelTVarIO, modifyTVar, newEmptyTMVar,
traceTMVar, traceTMVarIO, labelTVar, labelTVarIO,
traceTVar, traceTVarIO, modifyTVar, newEmptyTMVar,
newEmptyTMVarIO, newEmptyTMVarM, newTMVar, newTMVarIO,
newTMVarM, newTVar, newTVarIO, newTVarM, putTMVar,
readTMVar, readTVar, readTVarIO, stateTVar, swapTMVar,
Expand Down Expand Up @@ -97,6 +102,20 @@ labelTVar StrictTVar { tvar } = Lazy.labelTVar tvar
labelTVarIO :: MonadLabelledSTM m => StrictTVar m a -> String -> m ()
labelTVarIO v = atomically . labelTVar v

traceTVar :: MonadTraceSTM m
=> proxy m
-> StrictTVar m a
-> (Maybe a -> a -> InspectMonad m TraceValue)
-> STM m ()
traceTVar p StrictTVar {tvar} = Lazy.traceTVar p tvar

traceTVarIO :: MonadTraceSTM m
=> proxy m
-> StrictTVar m a
-> (Maybe a -> a -> InspectMonad m TraceValue)
-> m ()
traceTVarIO p StrictTVar {tvar} = Lazy.traceTVarIO p tvar

castStrictTVar :: LazyTVar m ~ LazyTVar n
=> StrictTVar m a -> StrictTVar n a
castStrictTVar v@StrictTVar {tvar} =
Expand Down Expand Up @@ -198,6 +217,20 @@ labelTMVar (StrictTMVar tvar) = Lazy.labelTMVar tvar
labelTMVarIO :: MonadLabelledSTM m => StrictTMVar m a -> String -> m ()
labelTMVarIO v = atomically . labelTMVar v

traceTMVar :: MonadTraceSTM m
=> proxy m
-> StrictTMVar m a
-> (Maybe (Maybe a) -> (Maybe a) -> InspectMonad m TraceValue)
-> STM m ()
traceTMVar p (StrictTMVar var) = Lazy.traceTMVar p var

traceTMVarIO :: MonadTraceSTM m
=> proxy m
-> StrictTMVar m a
-> (Maybe (Maybe a) -> (Maybe a) -> InspectMonad m TraceValue)
-> m ()
traceTMVarIO p (StrictTMVar var) = Lazy.traceTMVarIO p var

castStrictTMVar :: LazyTMVar m ~ LazyTMVar n
=> StrictTMVar m a -> StrictTMVar n a
castStrictTMVar (StrictTMVar var) = StrictTMVar var
Expand Down

0 comments on commit 1bdce8b

Please sign in to comment.