Skip to content

Commit ffa9063

Browse files
committed
peer-selection: reorganised exports, part 1
Expanded `Ouroboros.Network.PeerSelection` module to simplify imports in downstream libraries.
1 parent 53ad925 commit ffa9063

File tree

16 files changed

+98
-98
lines changed

16 files changed

+98
-98
lines changed

cardano-diffusion/lib/Cardano/Network/PeerSelection/Churn.hs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -133,11 +133,12 @@ peerChurnGovernor PeerChurnArgs {
133133
pcaRng = inRng,
134134
pcaPeerSelectionVar = peerSelectionVar,
135135
pcaReadCounters = readCounters,
136-
getLedgerStateCtx = LedgerPeersConsensusInterface {
137-
lpExtraAPI = Cardano.LedgerPeersConsensusInterface {
138-
Cardano.readFetchMode,
139-
Cardano.getLedgerStateJudgement
140-
}
136+
getLedgerPeersAPI =
137+
LedgerPeersConsensusInterface {
138+
lpExtraAPI = Cardano.LedgerPeersConsensusInterface {
139+
Cardano.readFetchMode,
140+
Cardano.getLedgerStateJudgement
141+
}
141142
},
142143
getLocalRootHotTarget,
143144
pcaPeerSelectionTargets = peerSelectionTargets,

cardano-diffusion/lib/Cardano/Network/PeerSelection/Governor/Monitor.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -645,7 +645,7 @@ waitForSystemToQuiesce st@PeerSelectionState{
645645
, not hasOnlyBootstrapPeers
646646
-- Are the local root peers all trustable?
647647
, all (\case
648-
LocalRootConfig { extraFlags = IsTrustable }
648+
LocalRootConfig { extraLocalRootFlags = IsTrustable }
649649
-> True
650650
_ -> False
651651
)

cardano-diffusion/lib/Cardano/Network/PeerSelection/PeerSelectionActions.hs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,12 +72,12 @@ requestPublicRootPeers
7272
$ requiresBootstrapPeers <$> useBootstrapped
7373
<*> getLedgerStateJudgement
7474
if usingBootstrapPeers
75-
then do
75+
then do
7676
-- If the ledger state is in sensitive state we should get trustable peers.
7777
(bootstrapPeers, dt) <- requestConfiguredBootstrapPeers n
7878
pure (Cardano.PublicRootPeers.fromBootstrapPeers bootstrapPeers, dt)
79-
else do
80-
Ouroboros.requestPublicRootPeers
79+
else do
80+
Ouroboros.requestPublicRootPeersImpl
8181
publicTracer
8282
readPublicRootPeers
8383
pad

cardano-diffusion/lib/Cardano/Network/PeerSelection/State/LocalRootPeers.hs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,20 @@ clampToTrustable :: Ord peeraddr
1919
=> LocalRootPeers PeerTrustable peeraddr
2020
-> LocalRootPeers PeerTrustable peeraddr
2121
clampToTrustable (LocalRootPeers m gs) =
22-
let trustedMap = Map.filter (\LocalRootConfig { extraFlags } -> case extraFlags of
23-
IsTrustable -> True
24-
IsNotTrustable -> False
22+
let trustedMap = Map.filter (\LocalRootConfig { extraLocalRootFlags } ->
23+
case extraLocalRootFlags of
24+
IsTrustable -> True
25+
IsNotTrustable -> False
2526
)
2627
m
2728
in LocalRootPeers trustedMap (trustedGroups gs)
2829
where
2930
trustedGroups [] = []
3031
trustedGroups ((h, w, g):gss) =
31-
let trusted = Map.filter (\LocalRootConfig { extraFlags } -> case extraFlags of
32-
IsTrustable -> True
33-
IsNotTrustable -> False
32+
let trusted = Map.filter (\LocalRootConfig { extraLocalRootFlags } ->
33+
case extraLocalRootFlags of
34+
IsTrustable -> True
35+
IsNotTrustable -> False
3436
)
3537
m
3638
trustedSet = Map.keysSet trusted
@@ -47,16 +49,16 @@ isPeerTrustable :: Ord peeraddr
4749
-> Bool
4850
isPeerTrustable peeraddr lrp =
4951
case Map.lookup peeraddr (toMap lrp) of
50-
Just LocalRootConfig { extraFlags = IsTrustable }
52+
Just LocalRootConfig { extraLocalRootFlags = IsTrustable }
5153
-> True
5254
_ -> False
5355

5456
trustableKeysSet :: LocalRootPeers PeerTrustable peeraddr
5557
-> Set peeraddr
5658
trustableKeysSet (LocalRootPeers m _) =
5759
Map.keysSet
58-
. Map.filter (\LocalRootConfig { extraFlags } ->
59-
case extraFlags of
60+
. Map.filter (\LocalRootConfig { extraLocalRootFlags } ->
61+
case extraLocalRootFlags of
6062
IsTrustable -> True
6163
IsNotTrustable -> False)
6264
$ m

cardano-diffusion/tests/lib/Test/Cardano/Network/Diffusion/Testnet/Simulation.hs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,6 @@ import Cardano.Network.PeerSelection.Governor.Types qualified as Cardano
9898
import Cardano.Network.PeerSelection.Governor.Types qualified as ExtraSizes
9999
import Cardano.Network.PeerSelection.PeerSelectionActions
100100
(requestPublicRootPeers)
101-
import Ouroboros.Network.PeerSelection.RelayAccessPoint
102101

103102
import Ouroboros.Network.Block (BlockNo)
104103
import Ouroboros.Network.BlockFetch (FetchMode (..), PraosFetchMode (..),
@@ -116,13 +115,9 @@ import Ouroboros.Network.Handshake.Acceptable (Acceptable (acceptableVersion))
116115
import Ouroboros.Network.InboundGovernor (RemoteTransitionTrace)
117116
import Ouroboros.Network.InboundGovernor qualified as IG
118117
import Ouroboros.Network.Mux (MiniProtocolLimits (..))
119-
import Ouroboros.Network.PeerSelection hiding (peerChurnGovernor,
120-
requestPublicRootPeers)
118+
import Ouroboros.Network.PeerSelection hiding (requestPublicRootPeers)
121119
import Ouroboros.Network.PeerSelection.Governor qualified as Governor
122120
import Ouroboros.Network.PeerSelection.LedgerPeers (accPoolStake)
123-
import Ouroboros.Network.PeerSelection.RootPeersDNS
124-
import Ouroboros.Network.PeerSelection.State.LocalRootPeers (HotValency (..),
125-
LocalRootConfig, WarmValency (..))
126121
import Ouroboros.Network.Protocol.BlockFetch.Codec (byteLimitsBlockFetch,
127122
timeLimitsBlockFetch)
128123
import Ouroboros.Network.Protocol.ChainSync.Codec (byteLimitsChainSync,

cardano-diffusion/tests/lib/Test/Cardano/Network/PeerSelection.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3726,7 +3726,7 @@ prop_governor_only_bootstrap_peers_in_clean_state env =
37263726
. selectEnvEvents
37273727
$ events
37283728
where
3729-
isTrustable LocalRootConfig { extraFlags = IsTrustable }
3729+
isTrustable LocalRootConfig { extraLocalRootFlags = IsTrustable }
37303730
= True
37313731
isTrustable _ = False
37323732

ouroboros-network/lib/Ouroboros/Network/Diffusion.hs

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
{-# LANGUAGE BlockArguments #-}
2-
{-# LANGUAGE CPP #-}
3-
{-# LANGUAGE DataKinds #-}
4-
{-# LANGUAGE DisambiguateRecordFields #-}
5-
{-# LANGUAGE FlexibleContexts #-}
6-
{-# LANGUAGE GADTs #-}
7-
{-# LANGUAGE KindSignatures #-}
8-
{-# LANGUAGE NamedFieldPuns #-}
9-
{-# LANGUAGE RankNTypes #-}
10-
{-# LANGUAGE ScopedTypeVariables #-}
11-
{-# LANGUAGE TypeOperators #-}
1+
{-# LANGUAGE BlockArguments #-}
2+
{-# LANGUAGE CPP #-}
3+
{-# LANGUAGE DataKinds #-}
4+
{-# LANGUAGE DuplicateRecordFields #-}
5+
{-# LANGUAGE FlexibleContexts #-}
6+
{-# LANGUAGE GADTs #-}
7+
{-# LANGUAGE KindSignatures #-}
8+
{-# LANGUAGE NamedFieldPuns #-}
9+
{-# LANGUAGE RankNTypes #-}
10+
{-# LANGUAGE ScopedTypeVariables #-}
11+
{-# LANGUAGE TypeOperators #-}
1212

1313
-- | This module is expected to be imported qualified.
1414
--
@@ -70,8 +70,8 @@ import Ouroboros.Network.IOManager
7070
import Ouroboros.Network.Mux hiding (MiniProtocol (..))
7171
import Ouroboros.Network.MuxMode
7272
import Ouroboros.Network.PeerSelection as PeerSelection
73-
import Ouroboros.Network.PeerSelection.Governor qualified as Governor
74-
import Ouroboros.Network.PeerSelection.RootPeersDNS (PeerActionsDNS (..))
73+
import Ouroboros.Network.PeerSelection.Churn as PeerSelection
74+
import Ouroboros.Network.PeerSelection.PeerSelectionActions as PeerSelection
7575
import Ouroboros.Network.PeerSelection.RootPeersDNS qualified as RootPeersDNS
7676
import Ouroboros.Network.PeerSelection.State.LocalRootPeers qualified as LocalRootPeers
7777
import Ouroboros.Network.PeerSharing (PeerSharingRegistry (..))
@@ -440,9 +440,9 @@ runM Interfaces
440440
localRootsVar <- newTVarIO mempty
441441

442442
-- churn will set initial targets
443-
peerSelectionTargetsVar <- newTVarIO Governor.nullPeerSelectionTargets
443+
peerSelectionTargetsVar <- newTVarIO PeerSelection.nullPeerSelectionTargets
444444

445-
countersVar <- newTVarIO (Governor.emptyPeerSelectionCounters daEmptyExtraCounters)
445+
countersVar <- newTVarIO (PeerSelection.emptyPeerSelectionCounters daEmptyExtraCounters)
446446

447447
-- Design notes:
448448
-- - We split the following code into two parts:
@@ -558,7 +558,7 @@ runM Interfaces
558558
muxMode socket (ExpandedInitiatorContext ntnAddr m)
559559
responderCtx ntnAddr ntnVersionData ntnVersion
560560
ByteString m a b
561-
-> (Governor.PeerStateActions
561+
-> (PeerSelection.PeerStateActions
562562
ntnAddr
563563
(PeerConnectionHandle muxMode responderCtx ntnAddr
564564
ntnVersionData ByteString m a b)
@@ -625,7 +625,7 @@ runM Interfaces
625625
requestPublicRootPeers =
626626
case daRequestPublicRootPeers of
627627
Nothing ->
628-
PeerSelection.requestPublicRootPeers
628+
PeerSelection.requestPublicRootPeersImpl
629629
dtTracePublicRootPeersTracer
630630
dcReadPublicRootPeers
631631
dnsActions
@@ -665,7 +665,7 @@ runM Interfaces
665665
m
666666
-> m Void
667667
peerSelectionGovernor' peerSelectionTracer dbgVar peerSelectionActions =
668-
Governor.peerSelectionGovernor
668+
PeerSelection.peerSelectionGovernor
669669
dtTracePeerSelectionTracer
670670
peerSelectionTracer
671671
dtTracePeerSelectionCounters
@@ -697,7 +697,7 @@ runM Interfaces
697697
, pcaRng = churnRng
698698
, pcaPeerSelectionVar = peerSelectionTargetsVar
699699
, pcaReadCounters = readTVar countersVar
700-
, getLedgerStateCtx = daLedgerPeersCtx
700+
, getLedgerPeersAPI = daLedgerPeersCtx
701701
, getLocalRootHotTarget =
702702
LocalRootPeers.hotTarget
703703
. LocalRootPeers.fromGroups
@@ -755,13 +755,13 @@ runM Interfaces
755755
-- InitiatorOnly mode, run peer selection only:
756756
InitiatorOnlyDiffusionMode ->
757757
withConnectionManagerInitiatorOnlyMode $ \connectionManager -> do
758-
debugStateVar <- newTVarIO $ Governor.emptyPeerSelectionState fuzzRng daEmptyExtraState mempty
758+
debugStateVar <- newTVarIO $ PeerSelection.emptyPeerSelectionState fuzzRng daEmptyExtraState mempty
759759
daInstallSigUSR1Handler connectionManager debugStateVar
760760
withPeerStateActions' connectionManager $ \peerStateActions->
761761
withPeerSelectionActions'
762762
(return Map.empty)
763763
peerStateActions $
764-
\(ledgerPeersThread, localRootPeersProvider) peerSelectionActions->
764+
\(ledgerPeersThread, localRootPeersProviderThread) peerSelectionActions->
765765
Async.withAsync
766766
(peerSelectionGovernor'
767767
dtDebugPeerSelectionInitiatorTracer
@@ -771,7 +771,7 @@ runM Interfaces
771771
peerChurnGovernor' $ \churnGovernorThread ->
772772
-- wait for any thread to fail:
773773
snd <$> Async.waitAny
774-
[ledgerPeersThread, localRootPeersProvider, governorThread, churnGovernorThread]
774+
[ledgerPeersThread, localRootPeersProviderThread, governorThread, churnGovernorThread]
775775

776776
-- InitiatorAndResponder mode, run peer selection and the server:
777777
InitiatorAndResponderDiffusionMode -> do
@@ -788,14 +788,14 @@ runM Interfaces
788788
-- end, unique to ...
789789
withServer sockets inboundInfoChannel
790790
\inboundGovernorThread readInboundState connectionManager -> do
791-
debugStateVar <- newTVarIO $ Governor.emptyPeerSelectionState fuzzRng daEmptyExtraState mempty
791+
debugStateVar <- newTVarIO $ PeerSelection.emptyPeerSelectionState fuzzRng daEmptyExtraState mempty
792792
daInstallSigUSR1Handler connectionManager debugStateVar
793793
withPeerStateActions' connectionManager $
794794
\peerStateActions ->
795795
withPeerSelectionActions'
796796
(mkInboundPeersMap <$> readInboundState)
797797
peerStateActions $
798-
\(ledgerPeersThread, localRootPeersProvider) peerSelectionActions ->
798+
\(ledgerPeersThread, localRootPeersProviderThread) peerSelectionActions ->
799799
Async.withAsync
800800
(do
801801
labelThisThread "Peer selection governor"
@@ -807,7 +807,7 @@ runM Interfaces
807807
\churnGovernorThread ->
808808
-- wait for any thread to fail:
809809
snd <$> Async.waitAny [ ledgerPeersThread
810-
, localRootPeersProvider
810+
, localRootPeersProviderThread
811811
, governorThread
812812
, churnGovernorThread
813813
, inboundGovernorThread

ouroboros-network/lib/Ouroboros/Network/Diffusion/Topology.hs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ import Ouroboros.Network.Diffusion.Configuration (DiffusionMode)
1010
import Ouroboros.Network.PeerSelection.LedgerPeers.Type (UseLedgerPeers)
1111
import Ouroboros.Network.PeerSelection.PeerAdvertise (PeerAdvertise)
1212
import Ouroboros.Network.PeerSelection.RelayAccessPoint (RelayAccessPoint)
13-
import Ouroboros.Network.PeerSelection.State.LocalRootPeers hiding (extraFlags)
14-
import Ouroboros.Network.PeerSelection.State.LocalRootPeers qualified as LRP
13+
import Ouroboros.Network.PeerSelection.State.LocalRootPeers
1514

1615
data NetworkTopology extraConfig extraFlags =
1716
NetworkTopology {
@@ -85,7 +84,7 @@ producerAddresses NetworkTopology { localRootPeersGroups
8584
, LocalRootConfig {
8685
diffusionMode = rootDiffusionMode lrp,
8786
peerAdvertise,
88-
LRP.extraFlags = extraFlags lrp
87+
extraLocalRootFlags = extraFlags lrp
8988
}
9089
)
9190
)

ouroboros-network/lib/Ouroboros/Network/Diffusion/Types.hs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,7 @@ import Ouroboros.Network.Snocket (FileDescriptor, Snocket)
7777
import Ouroboros.Network.Socket (SystemdSocketTracer)
7878

7979
import Ouroboros.Network.PeerSelection as PeerSelection
80-
import Ouroboros.Network.PeerSelection.Governor.Types
81-
import Ouroboros.Network.PeerSelection.RootPeersDNS
80+
import Ouroboros.Network.PeerSelection.Churn as PeerSelection
8281
import Ouroboros.Network.PeerSelection.State.LocalRootPeers qualified as LocalRootPeers
8382
import Ouroboros.Network.Server.RateLimiting (AcceptedConnectionsLimit)
8483

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
{-# LANGUAGE ExplicitNamespaces #-}
1+
{-# LANGUAGE DuplicateRecordFields #-}
2+
{-# LANGUAGE ExplicitNamespaces #-}
23

34
module Ouroboros.Network.PeerSelection
45
( module Governor
@@ -10,33 +11,48 @@ module Ouroboros.Network.PeerSelection
1011
, module PeerSelection.RelayAccessPoint
1112
, module PeerSelection.LedgerPeers
1213
, module PeerSelection.PeerMetrics
13-
, module PeerSelection.Churn
1414
, module PeerSelection.PeerAdvertise
1515
, module PeerSelection.PeerSharing
16+
, module PeerSelection.RootPeersDNS
17+
, module PeerSelection.State.KnownPeers
18+
, module PeerSelection.State.LocalRootPeers
1619
) where
1720

18-
import Ouroboros.Network.PeerSelection.Churn as PeerSelection.Churn
19-
-- Only essential `Governor` types.
20-
import Ouroboros.Network.PeerSelection.Governor as Governor
21-
(DebugPeerSelection (..), PeerSelectionActions,
22-
PeerSelectionInterfaces (..), PeerSelectionPolicy (..),
23-
PeerSelectionState, PeerSelectionTargets (..), PeerStateActions,
24-
PickPolicy)
21+
import Ouroboros.Network.PeerSelection.Governor as Governor (PeerSelectionState)
22+
import Ouroboros.Network.PeerSelection.Governor as Governor hiding
23+
(PeerSelectionState (..))
2524
import Ouroboros.Network.PeerSelection.LedgerPeers as PeerSelection.LedgerPeers
2625
(AfterSlot (..), IsBigLedgerPeer (..), LedgerPeerSnapshot (..),
2726
LedgerPeers (..), LedgerPeersConsensusInterface (..),
28-
LedgerPeersKind (..), NumberOfPeers (..), TraceLedgerPeers (..),
29-
UseLedgerPeers (..), WithLedgerPeersArgs (..), withLedgerPeers)
27+
LedgerPeersKind (..), NumberOfPeers (..), PoolStake (..),
28+
TraceLedgerPeers (..), UseLedgerPeers (..), WithLedgerPeersArgs (..),
29+
withLedgerPeers)
3030
import Ouroboros.Network.PeerSelection.PeerAdvertise as PeerSelection.PeerAdvertise
3131
import Ouroboros.Network.PeerSelection.PeerMetric as PeerSelection.PeerMetrics
3232
(PeerMetrics, PeerMetricsConfiguration (..), ReportPeerMetrics (..),
3333
newPeerMetric, newPeerMetric', nullMetric, reportMetric)
34-
import Ouroboros.Network.PeerSelection.PeerSelectionActions as PeerSelection.PeerSelectionActions
34+
-- NOTE: not re-exporting `requestPublicRootPeersImpl` to avoid name clash
35+
-- with the same function in `cardano-diffusion`.
36+
import Ouroboros.Network.PeerSelection.PeerSelectionActions as PeerSelection.PeerSelectionActions hiding
37+
(requestPublicRootPeersImpl)
3538
import Ouroboros.Network.PeerSelection.PeerSharing as PeerSelection.PeerSharing
3639
import Ouroboros.Network.PeerSelection.PeerStateActions as PeerSelection.PeerStateActions
3740
import Ouroboros.Network.PeerSelection.PublicRootPeers as PeerSelection.PublicRootPeers
3841
(PublicRootPeers)
3942
import Ouroboros.Network.PeerSelection.RelayAccessPoint as PeerSelection.RelayAccessPoint
40-
(IP (..), PortNumber, RelayAccessPoint (..))
43+
import Ouroboros.Network.PeerSelection.RootPeersDNS as PeerSelection.RootPeersDNS
44+
(DNSorIOError)
45+
import Ouroboros.Network.PeerSelection.RootPeersDNS as PeerSelection.RootPeersDNS hiding
46+
(DNSorIOError (..))
47+
import Ouroboros.Network.PeerSelection.State.KnownPeers as PeerSelection.State.KnownPeers
48+
(KnownPeerInfo (..))
49+
import Ouroboros.Network.PeerSelection.State.LocalRootPeers as PeerSelection.State.LocalRootPeers
50+
(HotValency (..), LocalRootConfig (..), LocalRootPeers,
51+
WarmValency (..))
4152
import Ouroboros.Network.PeerSelection.Types as PeerSelection
4253
import Ouroboros.Network.PeerSelection.Types as PeerSelection.Types
54+
import Ouroboros.Network.Protocol.PeerSharing.Type as PeerSelection.PeerSharing
55+
(PeerSharingAmount (..), PeerSharingResult (..))
56+
57+
-- NOTE: not re-exporting `Ouroboros.Network.PeerSelection.Churn` to avoid name
58+
-- clash with `peerChurnGovernor` in `cardano-diffusion`.

0 commit comments

Comments
 (0)