| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Ouroboros.Network.PeerSelection.Churn
Description
This subsystem manages the discovery and selection of upstream peers.
Synopsis
- data PeerChurnArgs (m :: Type -> Type) extraArgs extraDebugState extraFlags extraPeers extraAPI extraCounters extraTrace peeraddr = PeerChurnArgs {
- pcaPeerSelectionTracer :: Tracer m (TracePeerSelection extraDebugState extraFlags extraPeers extraTrace peeraddr)
- pcaDeadlineInterval :: DiffTime
- pcaBulkInterval :: DiffTime
- pcaPeerRequestTimeout :: DiffTime
- pcaRng :: StdGen
- pcaPeerSelectionVar :: StrictTVar m PeerSelectionTargets
- pcaReadCounters :: STM m (PeerSelectionCounters extraCounters)
- getLedgerPeersAPI :: LedgerPeersConsensusInterface extraAPI m
- getLocalRootHotTarget :: STM m HotValency
- pcaPeerSelectionTargets :: PeerSelectionTargets
- getExtraArgs :: extraArgs
- type ModifyPeerSelectionTargets = PeerSelectionTargets -> PeerSelectionTargets
- type CheckPeerSelectionCounters extraCounters = PeerSelectionCounters extraCounters -> PeerSelectionTargets -> Bool
- peerChurnGovernor :: (MonadDelay m, Alternative (STM m), MonadTimer m, MonadCatch m) => PeerChurnArgs m extraArgs extraDebugState extraFlags extraPeers extraAPI extraCounters extraTrace peeraddr -> m Void
Documentation
data PeerChurnArgs (m :: Type -> Type) extraArgs extraDebugState extraFlags extraPeers extraAPI extraCounters extraTrace peeraddr Source #
Record of arguments for peer churn governor
Constructors
| PeerChurnArgs | |
Fields
| |
type ModifyPeerSelectionTargets = PeerSelectionTargets -> PeerSelectionTargets Source #
Facilitates composing updates to various targets via back-to-back pipeline
type CheckPeerSelectionCounters extraCounters = PeerSelectionCounters extraCounters -> PeerSelectionTargets -> Bool Source #
peerChurnGovernor :: (MonadDelay m, Alternative (STM m), MonadTimer m, MonadCatch m) => PeerChurnArgs m extraArgs extraDebugState extraFlags extraPeers extraAPI extraCounters extraTrace peeraddr -> m Void Source #
Churn governor.
At every churn interval decrease active peers for a short while (1s), so that we can pick new ones. Then we churn non-active peers.
On startup the churn governor gives a head start to local root peers over root peers.