Skip to content

Commit 6e8d6c3

Browse files
committed
simulation: Export MonadSTM via STMCompat
1 parent edac822 commit 6e8d6c3

19 files changed

+25
-103
lines changed

.hlint.yaml

+4
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@
3232
- "Control.Monad.Class.MonadTime.SI"
3333
within: "TimeCompat"
3434
message: "Use TimeCompat instead"
35+
# Ensure that MonadSTM is imported from STMCompat
36+
- name: "Control.Concurrent.Class.MonadSTM"
37+
within: "STMCompat"
38+
message: "Use STMCompat instead"
3539
# Ensure that Ouroboros.Network primitives are imported from PraosProtocol.Common hierarchy
3640
- name: "Ouroboros.Network.AnchoredFragment"
3741
within: "PraosProtocol.Common.AnchoredFragment"

simulation/ouroboros-leios-sim.cabal

+1-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ library
8585
Sample
8686
SimRelay
8787
SimRelayP2P
88-
STMUtils
88+
STMCompat
8989
SimTCPLinks
9090
SimTypes
9191
TimeCompat

simulation/src/ChanMux.hs

+1-15
Original file line numberDiff line numberDiff line change
@@ -26,28 +26,14 @@ import qualified Control.Category as Cat
2626
import Control.Concurrent.Class.MonadMVar (
2727
MonadMVar (MVar, newMVar, withMVar),
2828
)
29-
import Control.Concurrent.Class.MonadSTM (
30-
MonadSTM (
31-
TQueue,
32-
TVar,
33-
atomically,
34-
modifyTVar,
35-
newTQueueIO,
36-
newTVarIO,
37-
readTQueue,
38-
readTVar,
39-
readTVarIO,
40-
writeTQueue,
41-
writeTVar
42-
),
43-
)
4429
import Control.Monad (forever)
4530
import Control.Monad.Class.MonadAsync (MonadAsync)
4631
import Control.Monad.Class.MonadFork (MonadFork (forkIO))
4732
import Control.Tracer (Contravariant (contramap), Tracer)
4833
import Data.Array (Array, listArray, (!))
4934
import Data.Dynamic (Dynamic, Typeable, fromDynamic, toDyn)
5035
import Data.Maybe (fromJust)
36+
import STMCompat
5137
import TimeCompat
5238

5339
class MuxBundle bundle where

simulation/src/ChanTCP.hs

+1-16
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,6 @@ module ChanTCP (
1212
) where
1313

1414
import Chan (Chan (..))
15-
import Control.Concurrent.Class.MonadSTM (
16-
MonadSTM (
17-
TMVar,
18-
TVar,
19-
atomically,
20-
modifyTVar',
21-
newEmptyTMVarIO,
22-
newTVarIO,
23-
putTMVar,
24-
readTMVar,
25-
readTVar,
26-
retry,
27-
takeTMVar,
28-
writeTVar
29-
),
30-
)
3115
import Control.Exception (assert)
3216
import Control.Monad (when)
3317
import Control.Monad.Class.MonadAsync (MonadAsync (async))
@@ -48,6 +32,7 @@ import ModelTCP (
4832
initTcpState,
4933
saneTcpState,
5034
)
35+
import STMCompat
5136
import TimeCompat
5237

5338
-- | In the scope of a two party connection, there are just two peers. These

simulation/src/LeiosProtocol/Relay.hs

+1-2
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ module LeiosProtocol.Relay where
2626

2727
import Chan
2828
import ChanDriver (ProtocolMessage, chanDriver)
29-
import Control.Concurrent.Class.MonadSTM (MonadSTM (..))
3029
import Control.DeepSeq (NFData)
3130
import Control.Exception (Exception, assert, throw)
3231
import Control.Monad (forM_, join, unless, void, when)
@@ -67,7 +66,7 @@ import qualified Network.TypedProtocol.Peer.Client as TC
6766
import qualified Network.TypedProtocol.Peer.Server as TS
6867
import NoThunks.Class (NoThunks)
6968
import Quiet (Quiet (..))
70-
import STMUtils
69+
import STMCompat
7170

7271
data BlockingStyle
7372
= StBlocking

simulation/src/LeiosProtocol/Short/Generate.hs

+1-3
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@
99

1010
module LeiosProtocol.Short.Generate where
1111

12-
import Control.Concurrent.Class.MonadSTM (
13-
MonadSTM (..),
14-
)
1512
import Control.Exception (assert)
1613
import Control.Monad (forM)
1714
import Control.Monad.State (
@@ -25,6 +22,7 @@ import Data.Bifunctor (Bifunctor (..))
2522
import Data.Kind (Type)
2623
import LeiosProtocol.Common
2724
import LeiosProtocol.Short hiding (Stage (..))
25+
import STMCompat
2826
import System.Random (StdGen, uniformR)
2927

3028
--------------------------------------------------------------------------------

simulation/src/LeiosProtocol/Short/Node.hs

+1-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ module LeiosProtocol.Short.Node where
1313
import ChanMux
1414
import Control.Category ((>>>))
1515
import Control.Concurrent.Class.MonadMVar
16-
import Control.Concurrent.Class.MonadSTM
1716
import Control.Exception (assert)
1817
import Control.Monad (forever, guard, when)
1918
import Control.Monad.Class.MonadAsync
@@ -44,7 +43,7 @@ import PraosProtocol.BlockFetch (
4443
)
4544
import qualified PraosProtocol.Common.Chain as Chain
4645
import qualified PraosProtocol.PraosNode as PraosNode
47-
import STMUtils
46+
import STMCompat
4847
import System.Random
4948

5049
--------------------------------------------------------------

simulation/src/LeiosProtocol/SimTestRelay.hs

+1-17
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,6 @@ import Chan
1414
import ChanMux
1515
import ChanTCP
1616
import Control.Category ((>>>))
17-
import Control.Concurrent.Class.MonadSTM (
18-
MonadSTM (
19-
STM,
20-
TQueue,
21-
TVar,
22-
atomically,
23-
modifyTVar',
24-
newTQueueIO,
25-
newTVarIO,
26-
readTQueue,
27-
readTVar,
28-
retry,
29-
writeTQueue,
30-
writeTVar
31-
),
32-
)
3317
import Control.Exception (assert)
3418
import Control.Monad (forever, when)
3519
import Control.Monad.Class.MonadAsync (
@@ -52,7 +36,7 @@ import qualified Data.Set as Set
5236
import LeiosProtocol.Relay
5337
import LeiosProtocol.RelayBuffer (RelayBuffer)
5438
import qualified LeiosProtocol.RelayBuffer as RB
55-
import STMUtils
39+
import STMCompat
5640
import SimTCPLinks (labelDirToLabelLink, selectTimedEvents, simTracer)
5741
import SimTypes
5842
import System.Random (StdGen, uniform, uniformR)

simulation/src/PraosProtocol/BlockFetch.hs

+1-4
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,6 @@ module PraosProtocol.BlockFetch where
2424

2525
import Chan (Chan)
2626
import ChanDriver (ProtocolMessage, chanDriver)
27-
import Control.Concurrent.Class.MonadSTM (
28-
MonadSTM (..),
29-
)
3027
import Control.Exception (assert)
3128
import Control.Monad (forM, forever, guard, join, unless, void, when, (<=<))
3229
import Control.Tracer (Contravariant (contramap), Tracer, traceWith)
@@ -53,7 +50,7 @@ import Numeric.Natural (Natural)
5350
import PraosProtocol.Common
5451
import qualified PraosProtocol.Common.AnchoredFragment as AnchoredFragment
5552
import qualified PraosProtocol.Common.Chain as Chain
56-
import STMUtils
53+
import STMCompat
5754

5855
data BlockFetchState (body :: Type)
5956
= StIdle

simulation/src/PraosProtocol/BlockGeneration.hs

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ module PraosProtocol.BlockGeneration where
66

77
import Cardano.Slotting.Slot (WithOrigin (..))
88
import ChanTCP (Bytes)
9-
import Control.Concurrent.Class.MonadSTM (MonadSTM (..))
109
import Control.Monad (forever)
1110
import Control.Tracer
1211
import Data.ByteString as BS
1312
import Data.ByteString.Char8 as BS8
1413
import Data.Word (Word64)
1514
import PraosProtocol.Common
1615
import qualified PraosProtocol.Common.Chain as Chain
16+
import STMCompat
1717
import System.Random (StdGen, uniformR)
1818

1919
-- | Returns a block that can extend the chain.

simulation/src/PraosProtocol/ChainSync.hs

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ module PraosProtocol.ChainSync where
1616

1717
import Chan (Chan)
1818
import ChanDriver (ProtocolMessage, chanDriver)
19-
import Control.Concurrent.Class.MonadSTM (MonadSTM (..))
2019
import Control.Exception (assert)
2120
import Control.Monad (void)
2221
import Control.Tracer (Tracer, traceWith)
@@ -33,6 +32,7 @@ import qualified Network.TypedProtocol.Peer.Client as TC
3332
import qualified Network.TypedProtocol.Peer.Server as TS
3433
import PraosProtocol.Common
3534
import qualified PraosProtocol.Common.Chain as Chain
35+
import STMCompat
3636

3737
--------------------------------
3838
---- ChainSync

simulation/src/PraosProtocol/PraosNode.hs

+1-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ module PraosProtocol.PraosNode (
99
where
1010

1111
import ChanMux
12-
import Control.Concurrent.Class.MonadSTM (MonadSTM (..))
1312
import Control.Monad.Class.MonadAsync (Concurrently (..), MonadAsync (..))
1413
import Control.Tracer (Tracer)
1514
import Data.ByteString (ByteString)
@@ -23,7 +22,7 @@ import PraosProtocol.BlockGeneration
2322
import PraosProtocol.ChainSync (ChainConsumerState (..), ChainSyncMessage, runChainConsumer, runChainProducer)
2423
import PraosProtocol.Common
2524
import qualified PraosProtocol.Common.Chain as Chain (Chain (..))
26-
import STMUtils
25+
import STMCompat
2726

2827
data Praos body f = Praos
2928
{ protocolChainSync :: f ChainSyncMessage

simulation/src/PraosProtocol/SimBlockFetch.hs

+1-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ module PraosProtocol.SimBlockFetch where
55
import Chan (Chan)
66
import ChanDriver (ProtocolMessage)
77
import ChanTCP
8-
import Control.Concurrent.Class.MonadSTM (MonadSTM (..))
98
import Control.Monad.Class.MonadAsync (
109
MonadAsync (..),
1110
mapConcurrently_,
@@ -23,7 +22,7 @@ import Data.Set (Set)
2322
import qualified Data.Set as Set
2423
import PraosProtocol.BlockFetch
2524
import PraosProtocol.Common hiding (Point)
26-
import STMUtils
25+
import STMCompat
2726
import SimTCPLinks
2827
import SimTypes
2928

simulation/src/PraosProtocol/SimChainSync.hs

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,12 @@ import ChanTCP (
99
TcpEvent,
1010
newConnectionTCP,
1111
)
12-
import Control.Concurrent.Class.MonadSTM (MonadSTM (..))
1312
import Control.Monad.Class.MonadAsync (
1413
MonadAsync (concurrently_),
1514
)
1615
import Control.Monad.IOSim as IOSim (IOSim, runSimTrace)
1716
import Control.Tracer as Tracer (
18-
Contravariant (contramap),
17+
Contravariant (..),
1918
Tracer (Tracer),
2019
traceWith,
2120
)
@@ -32,6 +31,7 @@ import PraosProtocol.ChainSync (
3231
)
3332
import PraosProtocol.Common hiding (Point)
3433
import qualified PraosProtocol.Common.Chain as Chain
34+
import STMCompat
3535
import SimTCPLinks (
3636
labelDirToLabelLink,
3737
mkTcpConnProps,

simulation/src/PraosProtocol/SimPraos.hs

+2-5
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,10 @@ module PraosProtocol.SimPraos where
1010

1111
import ChanMux
1212
import ChanTCP
13-
import Control.Monad.Class.MonadAsync (
14-
MonadAsync (concurrently_),
15-
)
13+
import Control.Monad.Class.MonadAsync (MonadAsync (..))
1614
import Control.Monad.IOSim as IOSim (IOSim, runSimTrace)
1715
import Control.Tracer as Tracer (
18-
Contravariant (contramap),
16+
Contravariant (..),
1917
Tracer,
2018
traceWith,
2119
)
@@ -25,7 +23,6 @@ import qualified Data.Map.Strict as Map
2523
import Data.Set (Set)
2624
import qualified Data.Set as Set
2725
import PraosProtocol.Common hiding (Point)
28-
import PraosProtocol.Common.Chain (Chain (..))
2926
import PraosProtocol.PraosNode (PraosMessage, runPraosNode)
3027
import SimTCPLinks
3128
import SimTypes

simulation/src/RelayProtocol.hs

+1-12
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,6 @@ module RelayProtocol (
2626
relayClient,
2727
) where
2828

29-
import Control.Concurrent.Class.MonadSTM (
30-
MonadSTM (
31-
STM,
32-
TVar,
33-
atomically,
34-
modifyTVar',
35-
newTVarIO,
36-
readTVar,
37-
readTVarIO,
38-
retry
39-
),
40-
)
4129
import Control.Exception (assert)
4230
import Control.Monad (when)
4331
import Data.FingerTree (FingerTree)
@@ -50,6 +38,7 @@ import qualified Data.Map.Strict as Map
5038
import Data.Set (Set)
5139
import qualified Data.Set as Set
5240
import Data.Word (Word64)
41+
import STMCompat
5342
import TimeCompat
5443

5544
import Chan (Chan (readChan, writeChan))

simulation/src/STMUtils.hs simulation/src/STMCompat.hs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
{-# LANGUAGE NamedFieldPuns #-}
22
{-# LANGUAGE ScopedTypeVariables #-}
33

4-
module STMUtils (
4+
module STMCompat (
5+
MonadSTM (..),
56
ReadOnly,
67
asReadOnly,
78
readReadOnlyTVar,

simulation/src/SimRelay.hs

+1-14
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,6 @@
1010

1111
module SimRelay where
1212

13-
import Control.Concurrent.Class.MonadSTM (
14-
MonadSTM (
15-
STM,
16-
TQueue,
17-
atomically,
18-
newTQueueIO,
19-
newTVarIO,
20-
readTQueue,
21-
readTVar,
22-
retry,
23-
writeTQueue,
24-
writeTVar
25-
),
26-
)
2713
import Control.Monad (forever)
2814
import Control.Monad.Class.MonadAsync (
2915
Concurrently (Concurrently, runConcurrently),
@@ -40,6 +26,7 @@ import Data.Map.Strict (Map)
4026
import qualified Data.Map.Strict as Map
4127
import Data.Set (Set)
4228
import qualified Data.Set as Set
29+
import STMCompat
4330
import System.Random (StdGen, uniform, uniformR)
4431

4532
import Chan

simulation/src/SimTCPLinks.hs

+1-3
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@ module SimTCPLinks where
66

77
import Chan
88
import ChanTCP
9-
import Control.Concurrent.Class.MonadSTM (
10-
MonadSTM (atomically, newTQueueIO, readTQueue, writeTQueue),
11-
)
129
import Control.Monad (replicateM_)
1310
import Control.Monad.Class.MonadAsync (
1411
Concurrently (Concurrently, runConcurrently),
@@ -30,6 +27,7 @@ import Control.Tracer as Tracer (
3027
import Data.Bifoldable (Bifoldable (bifoldr))
3128
import Data.Dynamic (Typeable, fromDynamic)
3229
import ModelTCP
30+
import STMCompat
3331
import SimTypes
3432
import TimeCompat
3533

0 commit comments

Comments
 (0)