Skip to content

Commit 8dc9126

Browse files
committed
Break out Idling into its own module
This allows us to reuse it in the ObjectDiffusion inbound state interface.
1 parent 4d29adb commit 8dc9126

File tree

5 files changed

+41
-22
lines changed

5 files changed

+41
-22
lines changed

ouroboros-consensus/bench/ChainSync-client-bench/Main.hs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import qualified Ouroboros.Consensus.MiniProtocol.ChainSync.Client.InFutureCheck
3737
import Ouroboros.Consensus.MiniProtocol.ChainSync.Server
3838
( chainSyncServerForFollower
3939
)
40+
import qualified Ouroboros.Consensus.MiniProtocol.Util.Idling as Idling
4041
import Ouroboros.Consensus.Node.NetworkProtocolVersion
4142
( NodeToNodeVersion
4243
)
@@ -158,7 +159,7 @@ oneBenchRun
158159
, CSClient.headerMetricsTracer = nullTracer
159160
, CSClient.setCandidate = writeTVar varCandidate
160161
, CSClient.setLatestSlot = \_ -> pure ()
161-
, CSClient.idling = CSClient.noIdling
162+
, CSClient.idling = Idling.noIdling
162163
, CSClient.loPBucket = CSClient.noLoPBucket
163164
, CSClient.jumping = CSClient.noJumping
164165
}

ouroboros-consensus/ouroboros-consensus.cabal

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,8 @@ library
197197
Ouroboros.Consensus.MiniProtocol.ObjectDiffusion.ObjectPool.PerasCert
198198
Ouroboros.Consensus.MiniProtocol.ObjectDiffusion.Outbound
199199
Ouroboros.Consensus.MiniProtocol.ObjectDiffusion.PerasCert
200+
Ouroboros.Consensus.MiniProtocol.Util
201+
Ouroboros.Consensus.MiniProtocol.Util.Idling
200202
Ouroboros.Consensus.Node.GsmState
201203
Ouroboros.Consensus.Node.InitStorage
202204
Ouroboros.Consensus.Node.NetworkProtocolVersion

ouroboros-consensus/src/ouroboros-consensus/Ouroboros/Consensus/MiniProtocol/ChainSync/Client.hs

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ module Ouroboros.Consensus.MiniProtocol.ChainSync.Client
7373
, Jumping.noJumping
7474
, chainSyncStateFor
7575
, newChainSyncClientHandleCollection
76-
, noIdling
7776
, noLoPBucket
7877
, viewChainSyncState
7978
) where
@@ -122,6 +121,7 @@ import qualified Ouroboros.Consensus.MiniProtocol.ChainSync.Client.HistoricityCh
122121
import qualified Ouroboros.Consensus.MiniProtocol.ChainSync.Client.InFutureCheck as InFutureCheck
123122
import qualified Ouroboros.Consensus.MiniProtocol.ChainSync.Client.Jumping as Jumping
124123
import Ouroboros.Consensus.MiniProtocol.ChainSync.Client.State
124+
import Ouroboros.Consensus.MiniProtocol.Util.Idling (Idling (..))
125125
import Ouroboros.Consensus.Node.GsmState (GsmState (..))
126126
import Ouroboros.Consensus.Node.NetworkProtocolVersion
127127
import Ouroboros.Consensus.Peras.Weight (emptyPerasWeightSnapshot)
@@ -272,26 +272,6 @@ chainSyncStateFor ::
272272
chainSyncStateFor varHandles peer =
273273
readTVar . cschState . (Map.! peer) =<< readTVar varHandles
274274

275-
-- | Interface for the ChainSync client to manipulate the idling flag in
276-
-- 'ChainSyncState'.
277-
data Idling m = Idling
278-
{ idlingStart :: !(m ())
279-
-- ^ Mark the peer as being idle.
280-
, idlingStop :: !(m ())
281-
-- ^ Mark the peer as not being idle.
282-
}
283-
deriving stock Generic
284-
285-
deriving anyclass instance IOLike m => NoThunks (Idling m)
286-
287-
-- | No-op implementation, for tests.
288-
noIdling :: Applicative m => Idling m
289-
noIdling =
290-
Idling
291-
{ idlingStart = pure ()
292-
, idlingStop = pure ()
293-
}
294-
295275
-- | Interface to the LoP implementation for the ChainSync client.
296276
data LoPBucket m = LoPBucket
297277
{ lbPause :: !(m ())
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module Ouroboros.Consensus.MiniProtocol.Util
2+
( module Ouroboros.Consensus.MiniProtocol.Util.Idling
3+
) where
4+
5+
import Ouroboros.Consensus.MiniProtocol.Util.Idling
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
{-# LANGUAGE DeriveAnyClass #-}
2+
{-# LANGUAGE DeriveGeneric #-}
3+
{-# LANGUAGE DerivingStrategies #-}
4+
{-# LANGUAGE StandaloneDeriving #-}
5+
6+
module Ouroboros.Consensus.MiniProtocol.Util.Idling
7+
( Idling (..)
8+
, noIdling
9+
) where
10+
11+
import GHC.Generics (Generic)
12+
import Ouroboros.Consensus.Util.IOLike (IOLike, NoThunks)
13+
14+
-- | Interface to manipulate the idling flag in the client state of a peer.
15+
data Idling m = Idling
16+
{ idlingStart :: !(m ())
17+
-- ^ Mark the peer as being idle.
18+
, idlingStop :: !(m ())
19+
-- ^ Mark the peer as not being idle.
20+
}
21+
deriving stock Generic
22+
23+
deriving anyclass instance IOLike m => NoThunks (Idling m)
24+
25+
-- | No-op implementation, for tests.
26+
noIdling :: Applicative m => Idling m
27+
noIdling =
28+
Idling
29+
{ idlingStart = pure ()
30+
, idlingStop = pure ()
31+
}

0 commit comments

Comments
 (0)