diff --git a/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/Diffusion/Testnet/Cardano/Simulation.hs b/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/Diffusion/Testnet/Cardano/Simulation.hs index 5836d499f3f..c75d4adb73c 100644 --- a/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/Diffusion/Testnet/Cardano/Simulation.hs +++ b/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/Diffusion/Testnet/Cardano/Simulation.hs @@ -1265,10 +1265,10 @@ diffusionSimulation interfaces arguments (ExtraState.empty consensusMode (NumberOfBigLedgerPeers 0)) - (Cardano.cardanoExtraArgsToPeerSelectionActions cardanoExtraArgs) ExtraSizes.empty Cardano.cardanoPublicRootPeersAPI (Cardano.cardanoPeerSelectionGovernorArgs + (Cardano.cardanoExtraArgsToPeerSelectionActions cardanoExtraArgs) readUseLedgerPeers peerSharing ( Cardano.updateOutboundConnectionsState diff --git a/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/Diffusion/Testnet/P2P/Node.hs b/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/Diffusion/Testnet/P2P/Node.hs index 465da1fe61e..6674096f030 100644 --- a/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/Diffusion/Testnet/P2P/Node.hs +++ b/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/Diffusion/Testnet/P2P/Node.hs @@ -169,7 +169,7 @@ data Arguments extraChurnArgs extraFlags m = Arguments -- type ResolverException = SomeException -run :: forall extraState extraDebugState extraActions extraAPI +run :: forall extraState extraDebugState extraAPI extraPeers extraFlags extraChurnArgs extraCounters exception resolver resolverError m. ( Alternative (STM m) @@ -202,14 +202,12 @@ run :: forall extraState extraDebugState extraActions extraAPI -> Interfaces extraAPI m -> Arguments extraChurnArgs extraFlags m -> extraState - -> extraActions -> extraCounters -> PublicExtraPeersAPI extraPeers NtNAddr -> (forall muxMode responderCtx ntnVersionData bytes a b . PeerSelectionGovernorArgs extraState extraDebugState - extraActions extraFlags extraPeers extraAPI @@ -253,7 +251,7 @@ run :: forall extraState extraDebugState extraActions extraAPI -> Tracer m (TraceLabelPeer NtNAddr (TraceFetchClientState BlockHeader)) -> m Void run blockGeneratorArgs limits ni na - emptyExtraState extraActions emptyExtraCounters + emptyExtraState emptyExtraCounters extraPeersAPI psArgs psToExtraCounters toExtraPeers requestPublicRootPeers peerChurnGovernor tracersExtra tracerBlockFetch = @@ -456,7 +454,7 @@ run blockGeneratorArgs limits ni na } argsExtra :: Common.ArgumentsExtra - extraState extraDebugState extraActions + extraState extraDebugState extraFlags extraPeers extraAPI extraChurnArgs extraCounters exception NtNAddr resolver resolverError m @@ -474,7 +472,6 @@ run blockGeneratorArgs limits ni na , Common.daEmptyExtraState = emptyExtraState , Common.daEmptyExtraCounters = emptyExtraCounters , Common.daExtraPeersAPI = extraPeersAPI - , Common.daExtraActions = extraActions , Common.daExtraChurnArgs = aExtraChurnArgs na , Common.daToExtraPeers = toExtraPeers , Common.daRequestPublicRootPeers = Just requestPublicRootPeers diff --git a/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/PeerSelection.hs b/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/PeerSelection.hs index 8e3b6e55ae6..4c0cb31db75 100644 --- a/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/PeerSelection.hs +++ b/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/PeerSelection.hs @@ -4011,6 +4011,10 @@ _governorFindingPublicRoots targetNumberOfRootPeers readDomains readUseBootstrap peerSelectionGovernorArgs = Cardano.cardanoPeerSelectionGovernorArgs + Cardano.ExtraPeerSelectionActions { + genesisPeerTargets = targets, + readUseBootstrapPeers = readUseBootstrapPeers + } (return DontUseLedgerPeers) peerSharing (Cardano.updateOutboundConnectionsState (lpExtraAPI (getLedgerStateCtx actions))) @@ -4045,7 +4049,6 @@ _governorFindingPublicRoots targetNumberOfRootPeers readDomains readUseBootstrap actions :: PeerSelectionActions Cardano.ExtraState - (Cardano.ExtraPeerSelectionActions IO) PeerTrustable (Cardano.ExtraPeers SockAddr) (Cardano.LedgerPeersConsensusInterface IO) @@ -4083,10 +4086,6 @@ _governorFindingPublicRoots targetNumberOfRootPeers readDomains readUseBootstrap }, peerSelectionTargets = targets, readLedgerPeerSnapshot = pure Nothing, - extraActions = Cardano.ExtraPeerSelectionActions { - genesisPeerTargets = targets, - readUseBootstrapPeers = readUseBootstrapPeers - }, extraStateToExtraCounters = ExtraSizes.cardanoPeerSelectionStatetoCounters, extraPeersAPI = ExtraPeers.cardanoPublicRootPeersAPI } diff --git a/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/PeerSelection/Cardano/MockEnvironment.hs b/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/PeerSelection/Cardano/MockEnvironment.hs index 159fd868905..5d613cdf8fc 100644 --- a/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/PeerSelection/Cardano/MockEnvironment.hs +++ b/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/PeerSelection/Cardano/MockEnvironment.hs @@ -245,6 +245,7 @@ governorAction mockEnv@GovernorMockEnvironment { (useLedgerPeers mockEnv) usbVar <- playTimedScript (contramap TraceEnvSetUseBootstrapPeers tracerMockEnv) (useBootstrapPeers mockEnv) + let readUseBootstrapPeers = readTVar usbVar -- todo: make NumberOfBigLedgerPeers come from quickcheck debugStateVar <- StrictTVar.newTVarIO (emptyPeerSelectionState (mkStdGen 42) (ExtraState.empty consensusMode (NumberOfBigLedgerPeers 0)) ExtraPeers.empty) countersVar <- StrictTVar.newTVarIO (emptyPeerSelectionCounters ExtraSizes.empty) @@ -260,7 +261,7 @@ governorAction mockEnv@GovernorMockEnvironment { (first fst <$> targets mockEnv) mockPeerSelectionActions tracerMockEnv mockEnv initialPeerTargets - (readTVar usbVar) + readUseBootstrapPeers (readTVar lpVar) (readTVar lsjVar) (readTVar targetsVar) @@ -293,6 +294,10 @@ governorAction mockEnv@GovernorMockEnvironment { peerSelectionGovernorArgs = Cardano.cardanoPeerSelectionGovernorArgs + Cardano.ExtraPeerSelectionActions { + Cardano.genesisPeerTargets = snd initialPeerTargets, + Cardano.readUseBootstrapPeers = readUseBootstrapPeers + } (readTVar lpVar) (peerSharing actions) (Cardano.updateOutboundConnectionsState (lpExtraAPI (getLedgerStateCtx actions))) @@ -360,7 +365,6 @@ mockPeerSelectionActions :: forall m. -> STM m PeerSelectionTargets -> m (PeerSelectionActions Cardano.ExtraState - (Cardano.ExtraPeerSelectionActions m) PeerTrustable (Cardano.ExtraPeers PeerAddr) (Cardano.LedgerPeersConsensusInterface m) @@ -439,7 +443,6 @@ mockPeerSelectionActions' :: forall m. -> TVar m OutboundConnectionsState -> PeerSelectionActions Cardano.ExtraState - (Cardano.ExtraPeerSelectionActions m) PeerTrustable (Cardano.ExtraPeers PeerAddr) (Cardano.LedgerPeersConsensusInterface m) @@ -453,7 +456,7 @@ mockPeerSelectionActions' tracer publicRootPeers, peerSharingFlag } - (originalPeerTargets, peerTargets) + (originalPeerTargets, _peerTargets) scripts readTargets readUseBootstrapPeers @@ -498,10 +501,6 @@ mockPeerSelectionActions' tracer readInboundPeers = pure Map.empty, readLedgerPeerSnapshot = pure Nothing, peerSelectionTargets = originalPeerTargets, - extraActions = Cardano.ExtraPeerSelectionActions { - Cardano.genesisPeerTargets = peerTargets, - Cardano.readUseBootstrapPeers = readUseBootstrapPeers - }, extraPeersAPI = ExtraPeers.cardanoPublicRootPeersAPI, extraStateToExtraCounters = Cardano.cardanoPeerSelectionStatetoCounters } @@ -828,7 +827,6 @@ traceAssociationMode (IOSim s) -> PeerSelectionActions Cardano.ExtraState - extraActions extraFlags extraPeers extraAPI diff --git a/ouroboros-network/src/Ouroboros/Cardano/Network/PeerSelection/Governor/Monitor.hs b/ouroboros-network/src/Ouroboros/Cardano/Network/PeerSelection/Governor/Monitor.hs index 9a845ca6083..24be6ec7d88 100644 --- a/ouroboros-network/src/Ouroboros/Cardano/Network/PeerSelection/Governor/Monitor.hs +++ b/ouroboros-network/src/Ouroboros/Cardano/Network/PeerSelection/Governor/Monitor.hs @@ -70,9 +70,9 @@ governor_BOOTSTRAP_PEERS_TIMEOUT = 15 * 60 -- set of target peers. targetPeers :: (MonadSTM m, Ord peeraddr) - => PeerSelectionActions + => Cardano.ExtraPeerSelectionActions m + -> PeerSelectionActions Cardano.ExtraState - (Cardano.ExtraPeerSelectionActions m) extraFlags extraPeers extraAPI @@ -89,13 +89,14 @@ targetPeers -> Guarded (STM m) (TimedDecision m Cardano.ExtraState extraDebugState PeerTrustable extraPeers peeraddr peerconn) -targetPeers PeerSelectionActions{ peerSelectionTargets, - readPeerSelectionTargets, - extraActions = Cardano.ExtraPeerSelectionActions { - Cardano.genesisPeerTargets - }, - extraPeersAPI - } +targetPeers Cardano.ExtraPeerSelectionActions { + Cardano.genesisPeerTargets + } + PeerSelectionActions { + peerSelectionTargets, + readPeerSelectionTargets, + extraPeersAPI + } st@PeerSelectionState{ publicRootPeers, localRootPeers, @@ -182,11 +183,10 @@ targetPeers PeerSelectionActions{ peerSelectionTargets, -- trusted, however we will keep a connection to it until the outbound -- governor notices it and disconnects from it. localRoots - :: forall extraDebugState extraActions extraAPI extraCounters peeraddr peerconn m. + :: forall extraDebugState extraAPI extraCounters peeraddr peerconn m. (MonadSTM m, Ord peeraddr) => PeerSelectionActions Cardano.ExtraState - extraActions PeerTrustable (Cardano.ExtraPeers peeraddr) extraAPI @@ -380,9 +380,10 @@ monitorBootstrapPeersFlag :: ( MonadSTM m , Ord peeraddr ) - => PeerSelectionActions + => Cardano.ExtraPeerSelectionActions m + -> PeerSelectionActions Cardano.ExtraState - (Cardano.ExtraPeerSelectionActions m) + extraFlags (Cardano.ExtraPeers peeraddr) extraAPI @@ -399,11 +400,8 @@ monitorBootstrapPeersFlag -> Guarded (STM m) (TimedDecision m Cardano.ExtraState extraDebugState extraFlags (Cardano.ExtraPeers peeraddr) peeraddr peerconn) -monitorBootstrapPeersFlag PeerSelectionActions { extraActions = Cardano.ExtraPeerSelectionActions { - Cardano.readUseBootstrapPeers - } - , extraPeersAPI - } +monitorBootstrapPeersFlag Cardano.ExtraPeerSelectionActions { Cardano.readUseBootstrapPeers } + PeerSelectionActions { extraPeersAPI } st@PeerSelectionState { knownPeers , establishedPeers , publicRootPeers @@ -465,11 +463,10 @@ monitorBootstrapPeersFlag PeerSelectionActions { extraActions = Cardano.ExtraPee -- monitorLedgerStateJudgement :: ( MonadSTM m - , Ord peeraddr - ) + , Ord peeraddr + ) => PeerSelectionActions Cardano.ExtraState - (Cardano.ExtraPeerSelectionActions m) extraFlags (Cardano.ExtraPeers peeraddr) (Cardano.LedgerPeersConsensusInterface m) @@ -605,8 +602,8 @@ monitorLedgerStateJudgement PeerSelectionActions{ -- waitForSystemToQuiesce :: ( MonadSTM m - , Ord peeraddr - ) + , Ord peeraddr + ) => PeerSelectionState Cardano.ExtraState PeerTrustable diff --git a/ouroboros-network/src/Ouroboros/Cardano/Network/PeerSelection/Governor/Types.hs b/ouroboros-network/src/Ouroboros/Cardano/Network/PeerSelection/Governor/Types.hs index 24d422b307c..301fe6c9254 100644 --- a/ouroboros-network/src/Ouroboros/Cardano/Network/PeerSelection/Governor/Types.hs +++ b/ouroboros-network/src/Ouroboros/Cardano/Network/PeerSelection/Governor/Types.hs @@ -186,13 +186,14 @@ cardanoPeerSelectionGovernorArgs , Alternative (STM m) , Ord peeraddr ) - => STM m UseLedgerPeers + => Cardano.ExtraPeerSelectionActions m + -> STM m UseLedgerPeers -> PeerSharing -> (OutboundConnectionsState -> STM m ()) -> PeerSelectionGovernorArgs Cardano.ExtraState extraDebugState - (Cardano.ExtraPeerSelectionActions m) + PeerTrustable (Cardano.ExtraPeers peeraddr) (Cardano.LedgerPeersConsensusInterface m) @@ -201,7 +202,7 @@ cardanoPeerSelectionGovernorArgs peerconn BootstrapPeersCriticalTimeoutError m -cardanoPeerSelectionGovernorArgs readUseLedgerPeers peerSharing updateOutboundConnectionsState = +cardanoPeerSelectionGovernorArgs extraActions readUseLedgerPeers peerSharing updateOutboundConnectionsState = PeerSelectionGovernorArgs { -- If by any chance the node takes more than 15 minutes to converge to a -- clean state, we crash the node. This could happen in very rare @@ -223,12 +224,12 @@ cardanoPeerSelectionGovernorArgs readUseLedgerPeers peerSharing updateOutboundCo , extraDecisions = ExtraGuardedDecisions { preBlocking = \_ psa pst -> - monitorBootstrapPeersFlag psa pst + monitorBootstrapPeersFlag extraActions psa pst <> monitorLedgerStateJudgement psa pst <> waitForSystemToQuiesce pst , postBlocking = mempty , postNonBlocking = mempty - , customTargetsAction = Just $ \_ -> Cardano.targetPeers + , customTargetsAction = Just $ \_ -> Cardano.targetPeers extraActions , customLocalRootsAction = Just $ \_ -> Cardano.localRoots , enableProgressMakingActions = \st -> not (requiresBootstrapPeers (Cardano.bootstrapPeersFlag st) (Cardano.ledgerStateJudgement st)) diff --git a/ouroboros-network/src/Ouroboros/Network/Diffusion.hs b/ouroboros-network/src/Ouroboros/Network/Diffusion.hs index 847bf6a4585..a0b95e7e081 100644 --- a/ouroboros-network/src/Ouroboros/Network/Diffusion.hs +++ b/ouroboros-network/src/Ouroboros/Network/Diffusion.hs @@ -68,19 +68,19 @@ data ExtraTracers (p2p :: P2P) extraState extraDebugState extraFlags extraPeers -- | Diffusion arguments which depend on p2p mode. -- data ArgumentsExtra - (p2p :: P2P) extraArgs extraState extraDebugState extraActions extraAPI + (p2p :: P2P) extraArgs extraState extraDebugState extraAPI extraPeers extraFlags extraChurnArgs extraCounters exception ntnAddr resolver resolverError m where P2PArguments - :: Common.ArgumentsExtra extraState extraDebugState extraActions extraAPI + :: Common.ArgumentsExtra extraState extraDebugState extraAPI extraPeers extraFlags extraChurnArgs extraCounters exception ntnAddr resolver resolverError m - -> ArgumentsExtra 'P2P extraArgs extraState extraDebugState extraActions extraAPI + -> ArgumentsExtra 'P2P extraArgs extraState extraDebugState extraAPI extraPeers extraFlags extraChurnArgs extraCounters exception ntnAddr resolver resolverError m NonP2PArguments :: NonP2P.ArgumentsExtra - -> ArgumentsExtra 'NonP2P extraArgs extraState extraDebugState extraActions extraAPI + -> ArgumentsExtra 'NonP2P extraArgs extraState extraDebugState extraAPI extraPeers extraFlags extraChurnArgs extraCounters exception ntnAddr resolver resolverError m @@ -115,7 +115,7 @@ data ApplicationsExtra (p2p :: P2P) ntnAddr m a where -- | Run data diffusion in either 'P2P' or 'NonP2P' mode. -- -run :: forall (p2p :: P2P) extraArgs extraState extraDebugState extraActions extraFlags +run :: forall (p2p :: P2P) extraArgs extraState extraDebugState extraFlags extraPeers extraAPI extraChurnArgs extraCounters exception a. ( Monoid extraPeers , Eq extraCounters @@ -143,7 +143,7 @@ run :: forall (p2p :: P2P) extraArgs extraState extraDebugState extraActions ext IO Socket RemoteAddress LocalSocket LocalAddress - -> ArgumentsExtra p2p extraArgs extraState extraDebugState extraActions extraFlags + -> ArgumentsExtra p2p extraArgs extraState extraDebugState extraFlags extraPeers extraAPI extraChurnArgs extraCounters exception RemoteAddress Resolver IOException IO -> Applications p2p RemoteAddress LocalAddress NodeToNodeVersionData NodeToClientVersionData extraAPI IO a diff --git a/ouroboros-network/src/Ouroboros/Network/Diffusion/Common.hs b/ouroboros-network/src/Ouroboros/Network/Diffusion/Common.hs index a2f1a5a1620..93dda76a258 100644 --- a/ouroboros-network/src/Ouroboros/Network/Diffusion/Common.hs +++ b/ouroboros-network/src/Ouroboros/Network/Diffusion/Common.hs @@ -361,7 +361,7 @@ nullTracersExtra = -- | P2P Arguments Extras -- -data ArgumentsExtra extraState extraDebugState extraActions extraFlags extraPeers +data ArgumentsExtra extraState extraDebugState extraFlags extraPeers extraAPI extraChurnArgs extraCounters exception peeraddr resolver resolverError m = ArgumentsExtra { -- | selection targets for the peer governor @@ -432,7 +432,7 @@ data ArgumentsExtra extraState extraDebugState extraActions extraFlags extraPeer , daPeerSelectionGovernorArgs :: forall muxMode responderCtx ntnVersionData bytes a b . - PeerSelectionGovernorArgs extraState extraDebugState extraActions extraFlags extraPeers + PeerSelectionGovernorArgs extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr (PeerConnectionHandle muxMode responderCtx peeraddr @@ -485,10 +485,6 @@ data ArgumentsExtra extraState extraDebugState extraActions extraFlags extraPeer peeraddr -> m Void - -- | Provide extraActions to be passed to peer selection actions - -- - , daExtraActions :: extraActions - -- | Provide extraChurnArgs to be passed to churn governor -- , daExtraChurnArgs :: extraChurnArgs @@ -602,10 +598,10 @@ type NodeToNodePeerConnectionHandle (mode :: Mx.Mode) ntnAddr ntnVersionData m a ByteString m a b -type NodeToNodePeerSelectionActions extraState extraActions extraFlags extraPeers extraAPI extraCounters +type NodeToNodePeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters (mode :: Mx.Mode) ntnAddr ntnVersionData m a b = PeerSelectionActions - extraState extraActions extraFlags extraPeers extraAPI extraCounters + extraState extraFlags extraPeers extraAPI extraCounters ntnAddr (NodeToNodePeerConnectionHandle mode ntnAddr ntnVersionData m a b) m diff --git a/ouroboros-network/src/Ouroboros/Network/Diffusion/P2P.hs b/ouroboros-network/src/Ouroboros/Network/Diffusion/P2P.hs index f6bf0b098bd..248a71a24b0 100644 --- a/ouroboros-network/src/Ouroboros/Network/Diffusion/P2P.hs +++ b/ouroboros-network/src/Ouroboros/Network/Diffusion/P2P.hs @@ -102,7 +102,7 @@ runM :: forall m ntnFd ntnAddr ntnVersion ntnVersionData ntcFd ntcAddr ntcVersion ntcVersionData resolver resolverError exception a - extraState extraDebugState extraActions extraPeers + extraState extraDebugState extraPeers extraAPI extraFlags extraChurnArgs extraCounters . ( Alternative (STM m) @@ -155,7 +155,7 @@ runM Arguments m ntnFd ntnAddr ntcFd ntcAddr -> -- | p2p configuration - ArgumentsExtra extraState extraDebugState extraActions extraFlags + ArgumentsExtra extraState extraDebugState extraFlags extraPeers extraAPI extraChurnArgs extraCounters exception ntnAddr resolver resolverError m @@ -237,7 +237,6 @@ runM Interfaces , daPeerChurnGovernor , daToExtraPeers , daRequestPublicRootPeers - , daExtraActions , daExtraChurnArgs } Applications @@ -583,7 +582,6 @@ runM Interfaces -> ((Async m Void, Async m Void) -> PeerSelectionActions extraState - extraActions extraFlags extraPeers extraAPI @@ -625,7 +623,6 @@ runM Interfaces PeerSharingDisabled -> pure Map.empty PeerSharingEnabled -> readInboundPeers, readLedgerPeerSnapshot = daReadLedgerPeerSnapshot, - extraActions = daExtraActions, extraPeersAPI = daExtraPeersAPI, extraStateToExtraCounters = daPeerSelectionStateToExtraCounters, peerStateActions @@ -644,7 +641,7 @@ runM Interfaces -> StrictTVar m (PeerSelectionState extraState extraFlags extraPeers ntnAddr (PeerConnectionHandle muxMode responderCtx ntnAddr ntnVersionData ByteString m a b)) -> PeerSelectionActions - extraState extraActions extraFlags extraPeers + extraState extraFlags extraPeers extraAPI extraCounters ntnAddr (PeerConnectionHandle muxMode responderCtx ntnAddr ntnVersionData ByteString m a b) m @@ -848,7 +845,6 @@ run :: ( Monoid extraPeers -> ArgumentsExtra extraState extraDebugState - extraActions extraFlags extraPeers extraAPI diff --git a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor.hs b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor.hs index 85945f48d4c..5122e8a24c0 100644 --- a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor.hs +++ b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor.hs @@ -467,13 +467,13 @@ peerSelectionGovernor :: ( Alternative (STM m) -> Tracer m (DebugPeerSelection extraState extraFlags extraPeers peeraddr) -> Tracer m (PeerSelectionCounters extraCounters) -> PeerSelectionGovernorArgs - extraState extraDebugState extraActions extraFlags extraPeers extraAPI extraCounters + extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn exception m -> StdGen -> extraState -> extraPeers -> PeerSelectionActions - extraState extraActions extraFlags extraPeers extraAPI extraCounters + extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m -> PeerSelectionPolicy peeraddr m -> PeerSelectionInterfaces @@ -509,7 +509,7 @@ peerSelectionGovernor tracer debugTracer countersTracer peerSelectionArgs fuzzRn -- In each case we trace the action, update the state and execute the -- action asynchronously. -- -peerSelectionGovernorLoop :: forall m extraState extraDebugState extraActions extraFlags extraPeers extraAPI extraCounters exception peeraddr peerconn. +peerSelectionGovernorLoop :: forall m extraState extraDebugState extraFlags extraPeers extraAPI extraCounters exception peeraddr peerconn. ( Alternative (STM m) , MonadAsync m , MonadDelay m @@ -527,10 +527,10 @@ peerSelectionGovernorLoop :: forall m extraState extraDebugState extraActions ex -> Tracer m (DebugPeerSelection extraState extraFlags extraPeers peeraddr) -> Tracer m (PeerSelectionCounters extraCounters) -> PeerSelectionGovernorArgs - extraState extraDebugState extraActions extraFlags extraPeers extraAPI extraCounters + extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn exception m -> PeerSelectionActions - extraState extraActions extraFlags extraPeers extraAPI extraCounters + extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m -> PeerSelectionPolicy peeraddr m -> PeerSelectionInterfaces diff --git a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/ActivePeers.hs b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/ActivePeers.hs index 6d8bac56270..bee402fd663 100644 --- a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/ActivePeers.hs +++ b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/ActivePeers.hs @@ -42,7 +42,7 @@ import Ouroboros.Network.PeerSelection.Types (PublicExtraPeersAPI (..)) -- peers/ according to 'policyPickWarmPeersToPromote' policy. -- belowTarget - :: forall extraState extraDebugState extraActions extraFlags extraPeers extraAPI + :: forall extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m. ( Alternative (STM m) , MonadDelay m @@ -59,7 +59,6 @@ belowTarget -- quarantine it and make sure it is only connected to trusted peers. -> PeerSelectionActions extraState - extraActions extraFlags extraPeers extraAPI @@ -86,7 +85,7 @@ belowTarget enableAction = belowTargetBigLedgerPeers enableAction -- state) then this monitoring action will be disabled. -- belowTargetBigLedgerPeers - :: forall extraState extraDebugState extraActions extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m. + :: forall extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m. ( MonadDelay m , MonadSTM m , Ord peeraddr @@ -101,7 +100,6 @@ belowTargetBigLedgerPeers -- and make sure it is only connected to trusted peers. -> PeerSelectionActions extraState - extraActions extraFlags extraPeers extraAPI @@ -197,7 +195,7 @@ belowTargetBigLedgerPeers enableAction belowTargetLocal - :: forall extraActions extraState extraDebugState extraFlags extraPeers extraAPI + :: forall extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m. ( MonadDelay m , MonadSTM m @@ -206,7 +204,6 @@ belowTargetLocal ) => PeerSelectionActions extraState - extraActions extraFlags extraPeers extraAPI @@ -320,7 +317,7 @@ belowTargetLocal actions@PeerSelectionActions { ] belowTargetOther - :: forall extraActions extraState extraDebugState extraFlags extraPeers extraAPI + :: forall extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m. ( MonadDelay m , MonadSTM m @@ -329,7 +326,6 @@ belowTargetOther ) => PeerSelectionActions extraState - extraActions extraFlags extraPeers extraAPI @@ -422,14 +418,13 @@ belowTargetOther actions@PeerSelectionActions { jobPromoteWarmPeer - :: forall extraActions extraState extraDebugState extraFlags extraPeers extraAPI + :: forall extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m. ( MonadDelay m , Ord peeraddr ) => PeerSelectionActions extraState - extraActions extraFlags extraPeers extraAPI @@ -600,7 +595,7 @@ jobPromoteWarmPeer PeerSelectionActions{peerStateActions = PeerStateActions {act -- /warm peers/, according to 'policyPickHotPeersToDemote'. -- aboveTarget - :: forall extraActions extraState extraDebugState extraFlags extraPeers extraAPI + :: forall extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m. ( Alternative (STM m) , MonadSTM m @@ -609,7 +604,6 @@ aboveTarget ) => PeerSelectionActions extraState - extraActions extraFlags extraPeers extraAPI @@ -634,14 +628,13 @@ aboveTarget = aboveTargetBigLedgerPeers aboveTargetBigLedgerPeers - :: forall extraActions extraState extraDebugState extraFlags extraPeers extraAPI + :: forall extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m. ( MonadSTM m , Ord peeraddr ) => PeerSelectionActions extraState - extraActions extraFlags extraPeers extraAPI @@ -732,7 +725,7 @@ aboveTargetBigLedgerPeers actions@PeerSelectionActions { aboveTargetLocal - :: forall extraActions extraState extraDebugState extraFlags extraPeers extraAPI + :: forall extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m. ( MonadSTM m , Ord peeraddr @@ -740,7 +733,6 @@ aboveTargetLocal ) => PeerSelectionActions extraState - extraActions extraFlags extraPeers extraAPI @@ -837,7 +829,7 @@ aboveTargetLocal actions@PeerSelectionActions { aboveTargetOther - :: forall extraActions extraState extraDebugState extraFlags extraPeers extraAPI + :: forall extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m. ( MonadSTM m , Ord peeraddr @@ -845,7 +837,6 @@ aboveTargetOther ) => PeerSelectionActions extraState - extraActions extraFlags extraPeers extraAPI @@ -938,13 +929,12 @@ aboveTargetOther actions@PeerSelectionActions { jobDemoteActivePeer - :: forall extraActions extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m. + :: forall extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m. ( Monad m , Ord peeraddr ) => PeerSelectionActions extraState - extraActions extraFlags extraPeers extraAPI diff --git a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/BigLedgerPeers.hs b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/BigLedgerPeers.hs index c4ac7ff4579..2d7a661db3a 100644 --- a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/BigLedgerPeers.hs +++ b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/BigLedgerPeers.hs @@ -39,7 +39,6 @@ belowTarget -- quarantine it and make sure it is only connected to trusted peers. -> PeerSelectionActions extraState - extraActions extraFlags extraPeers extraAPI @@ -104,7 +103,7 @@ belowTarget enableAction jobReqBigLedgerPeers - :: forall m extraActions extraState extraDebugState extraFlags extraAPI extraPeers + :: forall m extraState extraDebugState extraFlags extraAPI extraPeers extraCounters peeraddr peerconn. ( MonadSTM m , Ord peeraddr @@ -112,7 +111,6 @@ jobReqBigLedgerPeers ) => PeerSelectionActions extraState - extraActions extraFlags extraPeers extraAPI @@ -228,7 +226,7 @@ jobReqBigLedgerPeers PeerSelectionActions { aboveTarget - :: forall m extraState extraDebugState extraActions extraFlags extraAPI extraPeers + :: forall m extraState extraDebugState extraFlags extraAPI extraPeers extraCounters peeraddr peerconn. ( Alternative (STM m) , MonadSTM m @@ -237,7 +235,6 @@ aboveTarget ) => PeerSelectionActions extraState - extraActions extraFlags extraPeers extraAPI diff --git a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/EstablishedPeers.hs b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/EstablishedPeers.hs index c00896fb9d9..8b0e311b5e4 100644 --- a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/EstablishedPeers.hs +++ b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/EstablishedPeers.hs @@ -58,7 +58,7 @@ import Ouroboros.Network.PeerSelection.Types (PublicExtraPeersAPI (..)) -- action never picks local root peers. -- belowTarget - :: forall extraState extraDebugState extraActions extraFlags extraPeers extraAPI + :: forall extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m. ( Alternative (STM m) , MonadSTM m @@ -73,7 +73,6 @@ belowTarget -- quarantine it and make sure it is only connected to trusted peers. -> PeerSelectionActions extraState - extraActions extraFlags extraPeers extraAPI @@ -99,7 +98,7 @@ belowTarget enableAction = -- configuration. -- belowTargetLocal - :: forall extraActions extraState extraDebugState extraFlags extraPeers extraAPI + :: forall extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m. ( MonadSTM m , Ord peeraddr @@ -107,7 +106,6 @@ belowTargetLocal ) => PeerSelectionActions extraState - extraActions extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m -> MkGuardedDecision @@ -218,7 +216,7 @@ belowTargetLocal actions@PeerSelectionActions { belowTargetOther - :: forall extraActions extraState extraDebugState extraFlags extraPeers + :: forall extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m. ( MonadSTM m , Ord peeraddr @@ -226,7 +224,6 @@ belowTargetOther ) => PeerSelectionActions extraState - extraActions extraFlags extraPeers extraAPI @@ -327,7 +324,7 @@ belowTargetOther actions@PeerSelectionActions { -- state) then this monitoring action will be disabled. -- belowTargetBigLedgerPeers - :: forall extraState extraDebugState extraActions extraFlags extraPeers + :: forall extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m. ( MonadSTM m , Ord peeraddr @@ -343,7 +340,6 @@ belowTargetBigLedgerPeers -- make sure it is only connected to trusted peers. -> PeerSelectionActions extraState - extraActions extraFlags extraPeers extraAPI @@ -453,14 +449,13 @@ maxColdPeerRetryBackoff = 5 jobPromoteColdPeer - :: forall extraActions extraState extraDebugState extraFlags extraPeers extraAPI + :: forall extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m. ( Monad m , Ord peeraddr ) => PeerSelectionActions extraState - extraActions extraFlags extraPeers extraAPI @@ -618,7 +613,7 @@ jobPromoteColdPeer PeerSelectionActions { -- /warm peers/ to the cold state, according to 'policyPickWarmPeersToDemote'. -- aboveTarget - :: forall extraActions extraState extraDebugState extraFlags extraPeers extraAPI + :: forall extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m. ( Alternative (STM m) , MonadSTM m @@ -626,7 +621,6 @@ aboveTarget ) => PeerSelectionActions extraState - extraActions extraFlags extraPeers extraAPI @@ -645,7 +639,7 @@ aboveTarget aboveTarget = aboveTargetBigLedgerPeers <> aboveTargetOther aboveTargetOther - :: forall extraActions extraState extraDebugState extraFlags extraPeers extraAPI + :: forall extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m. ( MonadSTM m , Ord peeraddr @@ -653,7 +647,6 @@ aboveTargetOther ) => PeerSelectionActions extraState - extraActions extraFlags extraPeers extraAPI @@ -759,7 +752,7 @@ aboveTargetOther actions@PeerSelectionActions { aboveTargetBigLedgerPeers - :: forall extraActions extraState extraDebugState extraFlags extraPeers extraAPI + :: forall extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m. ( MonadSTM m , Ord peeraddr @@ -767,7 +760,6 @@ aboveTargetBigLedgerPeers ) => PeerSelectionActions extraState - extraActions extraFlags extraPeers extraAPI @@ -865,14 +857,13 @@ aboveTargetBigLedgerPeers actions@PeerSelectionActions { jobDemoteEstablishedPeer - :: forall extraActions extraState extraDebugState extraFlags extraPeers extraAPI + :: forall extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m. ( Monad m , Ord peeraddr ) => PeerSelectionActions extraState - extraActions extraFlags extraPeers extraAPI diff --git a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/KnownPeers.hs b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/KnownPeers.hs index 49e5cee596e..6249908caa6 100644 --- a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/KnownPeers.hs +++ b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/KnownPeers.hs @@ -60,7 +60,7 @@ belowTarget -- This might be useful if the user requires its diffusion layer to stop -- making progress during a sensitive/vulnerable situation and quarantine -- it and make sure it is only connected to trusted peers. - -> PeerSelectionActions extraState extraActions extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m + -> PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m -> Time -- ^ blocked at -> Map peeraddr PeerSharing -> MkGuardedDecision extraState extraDebugState extraFlags extraPeers peeraddr peerconn m @@ -242,12 +242,11 @@ belowTarget enableAction -- If we ask for more peers than needed a random subset of the peers in the filtered result -- is used. jobPeerShare - :: forall m extraActions extraState extraDebugState extraFlags extraPeers + :: forall m extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn. (MonadAsync m, MonadTimer m, Ord peeraddr, Hashable peeraddr) => PeerSelectionActions extraState - extraActions extraFlags extraPeers extraAPI @@ -463,7 +462,6 @@ aboveTarget ) => PeerSelectionActions extraState - extraActions extraFlags extraPeers extraAPI diff --git a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/Monitor.hs b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/Monitor.hs index 6c1865df4e2..1c4c9548610 100644 --- a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/Monitor.hs +++ b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/Monitor.hs @@ -54,7 +54,7 @@ import Ouroboros.Network.PeerSelection.Types -- picked by the governor's 'peerSelectionGovernorLoop'. -- targetPeers :: (MonadSTM m, Ord peeraddr) - => PeerSelectionActions extraState extraActions extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m + => PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> Guarded (STM m) (TimedDecision m extraState extraDebugState extraFlags extraPeers peeraddr peerconn) targetPeers PeerSelectionActions{ readPeerSelectionTargets, @@ -112,9 +112,9 @@ jobs jobPool st = -- | Monitor connections. -- -connections :: forall m extraActions extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn. +connections :: forall m extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn. (MonadSTM m, Ord peeraddr) - => PeerSelectionActions extraState extraActions extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m + => PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> Guarded (STM m) (TimedDecision m extraState extraDebugState extraFlags extraPeers peeraddr peerconn) connections PeerSelectionActions{ @@ -307,9 +307,9 @@ connections PeerSelectionActions{ -- | Monitor local roots using 'readLocalRootPeers' 'STM' action. -- -localRoots :: forall extraState extraDebugState extraActions extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m. +localRoots :: forall extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m. (MonadSTM m, Ord peeraddr, Eq extraFlags) - => PeerSelectionActions extraState extraActions extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m + => PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> Guarded (STM m) (TimedDecision m extraState extraDebugState extraFlags extraPeers peeraddr peerconn) localRoots actions@PeerSelectionActions{ readLocalRootPeers @@ -401,7 +401,7 @@ localRoots actions@PeerSelectionActions{ readLocalRootPeers <> selectedToDemote }, decisionJobs = [ jobDemoteActivePeer actions peeraddr peerconn - | (peeraddr, peerconn) <- Map.assocs selectedToDemote' ] + | (peeraddr, peerconn) <- Map.assocs selectedToDemote' ] } -- |This job, which is initiated by monitorLedgerStateJudgement job, @@ -439,7 +439,7 @@ jobVerifyPeerSnapshot baseline@(LedgerPeerSnapshot (slot, _)) -- ledgerPeerSnapshotChange :: (MonadSTM m) => (extraState -> extraState) - -> PeerSelectionActions extraState extraActions extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m + -> PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> Guarded (STM m) (TimedDecision m extraState extraDebugState extraFlags extraPeers peeraddr peerconn) ledgerPeerSnapshotChange extraStateChange diff --git a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/RootPeers.hs b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/RootPeers.hs index 2624d1d133e..d5dc5ddb12b 100644 --- a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/RootPeers.hs +++ b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/RootPeers.hs @@ -31,7 +31,6 @@ belowTarget ) => PeerSelectionActions extraState - extraActions extraFlags extraPeers extraAPI @@ -94,7 +93,7 @@ belowTarget actions@PeerSelectionActions { jobReqPublicRootPeers - :: forall m extraActions extraState extraDebugState extraFlags extraPeers + :: forall m extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn. ( MonadSTM m , Ord peeraddr @@ -102,7 +101,6 @@ jobReqPublicRootPeers ) => PeerSelectionActions extraState - extraActions extraFlags extraPeers extraAPI diff --git a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/Types.hs b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/Types.hs index 64147e2105a..37be38b9bcc 100644 --- a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/Types.hs +++ b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/Types.hs @@ -319,7 +319,7 @@ sanePeerSelectionTargets PeerSelectionTargets{..} = -- * choice of known peer root sets -- * running both in simulation and for real -- -data PeerSelectionActions extraState extraActions extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m = +data PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m = PeerSelectionActions { -- | These are the targets as seen in the static configuration -- @@ -406,12 +406,7 @@ data PeerSelectionActions extraState extraActions extraFlags extraPeers extraAPI -- | Read the current state of ledger peer snapshot -- - readLedgerPeerSnapshot :: STM m (Maybe LedgerPeerSnapshot), - - -- | Extension point so that third party users can add more actions - -- - extraActions :: extraActions - + readLedgerPeerSnapshot :: STM m (Maybe LedgerPeerSnapshot) } -- | Interfaces required by the peer selection governor, which do not need to @@ -475,12 +470,11 @@ data PeerStateActions peeraddr peerconn m = PeerStateActions { ----------------------- -- Extra Guarded Decisions -- -type MonitoringAction extraState extraDebugState extraActions extraFlags +type MonitoringAction extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m = PeerSelectionPolicy peeraddr m -> PeerSelectionActions extraState - extraActions extraFlags extraPeers extraAPI @@ -498,7 +492,7 @@ type MonitoringAction extraState extraDebugState extraActions extraFlags (TimedDecision m extraState extraDebugState extraFlags extraPeers peeraddr peerconn) -data ExtraGuardedDecisions extraState extraDebugState extraActions extraFlags +data ExtraGuardedDecisions extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m = ExtraGuardedDecisions { @@ -508,7 +502,7 @@ data ExtraGuardedDecisions extraState extraDebugState extraActions extraFlags -- -- Note that this action should be blocking. preBlocking - :: MonitoringAction extraState extraDebugState extraActions extraFlags + :: MonitoringAction extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m -- | This guarded decision will come after all possibly preBlocking @@ -517,7 +511,7 @@ data ExtraGuardedDecisions extraState extraDebugState extraActions extraFlags -- -- Note that these actions can be either blocking or non-blocking. , postBlocking - :: MonitoringAction extraState extraDebugState extraActions extraFlags + :: MonitoringAction extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m -- | This guarded decision will come before all default non-blocking @@ -526,7 +520,7 @@ data ExtraGuardedDecisions extraState extraDebugState extraActions extraFlags -- -- Note that these actions should not be blocking. , postNonBlocking - :: MonitoringAction extraState extraDebugState extraActions extraFlags + :: MonitoringAction extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m -- | This action is necessary to the well functioning of the Outbound @@ -540,7 +534,7 @@ data ExtraGuardedDecisions extraState extraDebugState extraActions extraFlags -- If no custom action is required (i.e. Nothing) a default will be provided by -- 'Ouroboros.Network.PeerSelection.Governor.Monitor.targetPeers' , customTargetsAction - :: Maybe (MonitoringAction extraState extraDebugState extraActions + :: Maybe (MonitoringAction extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m) @@ -555,7 +549,7 @@ data ExtraGuardedDecisions extraState extraDebugState extraActions extraFlags -- If no custom action is required (i.e. Nothing) a default provided by -- 'Ouroboros.Network.PeerSelection.Governor.Monitor.localRoots' , customLocalRootsAction - :: Maybe (MonitoringAction extraState extraDebugState extraActions + :: Maybe (MonitoringAction extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m) @@ -586,7 +580,7 @@ data ExtraGuardedDecisions extraState extraDebugState extraActions extraFlags -- Peer Selection Arguments -- -data PeerSelectionGovernorArgs extraState extraDebugState extraActions extraFlags +data PeerSelectionGovernorArgs extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn exception m = PeerSelectionGovernorArgs { @@ -599,7 +593,7 @@ data PeerSelectionGovernorArgs extraState extraDebugState extraActions extraFlag -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> STM m () , extraDecisions - :: ExtraGuardedDecisions extraState extraDebugState extraActions extraFlags + :: ExtraGuardedDecisions extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m } diff --git a/ouroboros-network/src/Ouroboros/Network/PeerSelection/PeerSelectionActions.hs b/ouroboros-network/src/Ouroboros/Network/PeerSelection/PeerSelectionActions.hs index 6053ea749ba..c16cb51874a 100644 --- a/ouroboros-network/src/Ouroboros/Network/PeerSelection/PeerSelectionActions.hs +++ b/ouroboros-network/src/Ouroboros/Network/PeerSelection/PeerSelectionActions.hs @@ -49,7 +49,7 @@ import Ouroboros.Network.PeerSharing (PeerSharingController, import Ouroboros.Network.Protocol.PeerSharing.Type (PeerSharingAmount (..)) withPeerSelectionActions - :: forall extraState extraActions extraFlags extraPeers extraAPI extraCounters peeraddr peerconn resolver exception m a. + :: forall extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn resolver exception m a. ( Alternative (STM m) , MonadAsync m , MonadDelay m @@ -62,10 +62,10 @@ withPeerSelectionActions -> StrictTVar m (Config extraFlags peeraddr) -> PeerActionsDNS peeraddr resolver exception m -> ( (NumberOfPeers -> LedgerPeersKind -> m (Maybe (Set peeraddr, DiffTime))) - -> PeerSelectionActions extraState extraActions extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m) + -> PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m) -> WithLedgerPeersArgs extraAPI m -> ( (Async m Void, Async m Void) - -> PeerSelectionActions extraState extraActions extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m + -> PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m -> m a) -- ^ continuation, receives a handle to the local roots peer provider thread -- (only if local root peers were non-empty).