| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Cardano.Network.PeerSelection
Synopsis
- module Cardano.Network.PeerSelection.Governor.PeerSelectionActions
- module Cardano.Network.PeerSelection.Governor.Types
- module Cardano.Network.PeerSelection.PeerSelectionActions
- peerChurnGovernor :: forall m extraState extraFlags extraCounters extraPeers peeraddr. (MonadDelay m, Alternative (STM m), MonadTimer m, MonadCatch m) => PeerChurnArgs m (ExtraArguments m) extraState extraFlags extraPeers (LedgerPeersConsensusInterface m) extraCounters ExtraTrace peeraddr -> m Void
- data DebugPeerSelectionState = DebugPeerSelectionState {}
- data UseBootstrapPeers
- data ChurnMode
- data PeerTrustable
- newtype TraceChurnMode = TraceChurnMode ChurnMode
- data OutboundConnectionsState
- data ExtraArguments (m :: Type -> Type)
- data ExtraPeers peeraddr = ExtraPeers {
- publicConfigPeers :: !(Map peeraddr PeerAdvertise)
- bootstrapPeers :: !(Set peeraddr)
- data ExtraState
- type CardanoPublicRootPeers peeraddr = PublicRootPeers (ExtraPeers peeraddr) peeraddr
- isBootstrapPeersEnabled :: UseBootstrapPeers -> Bool
- isNodeAbleToMakeProgress :: UseBootstrapPeers -> LedgerStateJudgement -> Bool -> Bool
- requiresBootstrapPeers :: UseBootstrapPeers -> LedgerStateJudgement -> Bool
- data IP
- data PortNumber
- data ReportPeerMetrics (m :: Type -> Type) peerAddr = ReportPeerMetrics {
- reportHeader :: Tracer (STM m) (TraceLabelPeer peerAddr (SlotNo, Time))
- reportFetch :: Tracer (STM m) (TraceLabelPeer peerAddr (SizeInBytes, SlotNo, Time))
- newPeerMetric :: (MonadLabelledSTM m, NoThunks p, NFData p) => PeerMetricsConfiguration -> m (PeerMetrics m p)
- newPeerMetric' :: (MonadLabelledSTM m, NoThunks p, NFData p) => SlotMetric p -> SlotMetric (p, SizeInBytes) -> PeerMetricsConfiguration -> m (PeerMetrics m p)
- nullMetric :: forall (m :: Type -> Type) p. MonadSTM m => ReportPeerMetrics m p
- reportMetric :: forall (m :: Type -> Type) p. (MonadSTM m, Ord p) => PeerMetricsConfiguration -> PeerMetrics m p -> ReportPeerMetrics m (ConnectionId p)
- data PeerMetrics (m :: Type -> Type) p
- newtype PeerMetricsConfiguration = PeerMetricsConfiguration {}
- data PublicRootPeers extraPeers peeraddr
- constantResource :: forall (m :: Type -> Type) a. Applicative m => a -> Resource m a
- dispatchLookupWithTTL :: MonadAsync m => DNSLookupType -> (resolver -> resolvConf -> Domain -> TYPE -> m (Maybe (Either DNSError DNSMessage))) -> Tracer m DNSTrace -> (IP -> PortNumber -> peerAddr) -> DNSPeersKind -> RelayAccessPoint -> resolvConf -> resolver -> StdGen -> m (DNSLookupResult peerAddr)
- ioDNSActions :: Tracer IO DNSTrace -> DNSLookupType -> (IP -> PortNumber -> peerAddr) -> DNSActions peerAddr Resolver IO
- retryResource :: forall (m :: Type -> Type) e a. MonadDelay m => Tracer m e -> NonEmpty DiffTime -> Resource m (Either e a) -> Resource m a
- data DNSActions peerAddr resolver (m :: Type -> Type) = DNSActions {
- dnsResolverResource :: ResolvConf -> m (Resource m (Either DNSorIOError resolver))
- dnsAsyncResolverResource :: ResolvConf -> m (Resource m (Either DNSorIOError resolver))
- dnsLookupWithTTL :: DNSPeersKind -> RelayAccessPoint -> ResolvConf -> resolver -> StdGen -> m (DNSLookupResult peerAddr)
- type DNSLookupResult peerAddr = Either [DNSError] [(peerAddr, TTL)]
- data DNSTrace
- data DNSLookupType
- data DNSPeersKind
- data DNSorIOError
- data PeerActionsDNS peeraddr resolver (m :: Type -> Type) = PeerActionsDNS {
- paToPeerAddr :: IP -> PortNumber -> peeraddr
- paDnsActions :: DNSActions peeraddr resolver m
- newtype Resource (m :: Type -> Type) a = Resource {
- withResource :: m (a, Resource m a)
- type SRVPrefix = Domain
- data LedgerPeersKind
- data RelayAccessPoint
- prefixLedgerRelayAccessPoint :: SRVPrefix -> LedgerRelayAccessPoint -> RelayAccessPoint
- data AfterSlot
- data IsBigLedgerPeer
- data LedgerPeerSnapshot where
- LedgerPeerSnapshotV2 (WithOrigin SlotNo, [(AccPoolStake, (PoolStake, NonEmpty LedgerRelayAccessPoint))])
- pattern LedgerPeerSnapshot :: (WithOrigin SlotNo, [(AccPoolStake, (PoolStake, NonEmpty LedgerRelayAccessPoint))]) -> LedgerPeerSnapshot
- lpExtraAPI :: LedgerPeersConsensusInterface extraAPI m -> extraAPI
- lpGetLatestSlot :: LedgerPeersConsensusInterface extraAPI m -> STM m (WithOrigin SlotNo)
- lpGetLedgerPeers :: LedgerPeersConsensusInterface extraAPI m -> STM m [(PoolStake, NonEmpty LedgerRelayAccessPoint)]
- newtype PoolStake = PoolStake {}
- data UseLedgerPeers
- data LedgerRelayAccessPoint
- newtype LedgerRelayAccessPointV1 = LedgerRelayAccessPointV1 {}
- newDNSLocalRootSemaphore :: forall (m :: Type -> Type). MonadSTM m => STM m (DNSSemaphore m)
- newLedgerAndPublicRootDNSSemaphore :: MonadSTM m => m (DNSSemaphore m)
- withDNSSemaphore :: (MonadSTM m, MonadThrow m) => DNSSemaphore m -> m a -> m a
- data DNSSemaphore (m :: Type -> Type)
- resolveLedgerPeers :: forall m peerAddr resolver. (Ord peerAddr, MonadThrow m, MonadAsync m) => DNSSemaphore m -> ResolvConf -> DNSActions peerAddr resolver m -> LedgerPeersKind -> [RelayAccessPoint] -> StdGen -> m (Map Domain (Set peerAddr))
- publicRootPeersProvider :: forall peerAddr resolver a m. (MonadThrow m, MonadAsync m, Ord peerAddr) => Tracer m TracePublicRootPeers -> (IP -> PortNumber -> peerAddr) -> DNSSemaphore m -> ResolvConf -> STM m (Map RelayAccessPoint PeerAdvertise) -> DNSActions peerAddr resolver m -> StdGen -> ((Int -> m (Map peerAddr PeerAdvertise, DiffTime)) -> m a) -> m a
- data TracePublicRootPeers
- data PeerAdvertise
- data KnownPeerInfo = KnownPeerInfo {}
- data PeerSharing
- newtype HotValency = HotValency {
- getHotValency :: Int
- data LocalRootConfig extraFlags = LocalRootConfig {
- peerAdvertise :: !PeerAdvertise
- diffusionMode :: !DiffusionMode
- extraLocalRootFlags :: !extraFlags
- data LocalRootPeers extraFlags peeraddr
- newtype WarmValency = WarmValency {}
- localRootPeersProvider :: forall m extraFlags peerAddr resolver. (Alternative (STM m), MonadAsync m, MonadDelay m, MonadThrow m, Ord peerAddr, Eq extraFlags) => Tracer m (TraceLocalRootPeers extraFlags peerAddr) -> PeerActionsDNS peerAddr resolver m -> ResolvConf -> StdGen -> STM m [(HotValency, WarmValency, Map RelayAccessPoint (LocalRootConfig extraFlags))] -> StrictTVar m [(HotValency, WarmValency, Map peerAddr (LocalRootConfig extraFlags))] -> m Void
- data TraceLocalRootPeers extraFlags peerAddr
- = TraceLocalRootDomains (Config extraFlags RelayAccessPoint)
- | TraceLocalRootWaiting RelayAccessPoint DiffTime
- | TraceLocalRootGroups (Config extraFlags peerAddr)
- | TraceLocalRootDNSMap (Map RelayAccessPoint [peerAddr])
- | TraceLocalRootReconfigured (Config extraFlags RelayAccessPoint) (Config extraFlags RelayAccessPoint)
- | TraceLocalRootFailure RelayAccessPoint DNSorIOError
- | TraceLocalRootError Domain SomeException
- withLedgerPeers :: forall peerAddr resolver extraAPI m a. (MonadAsync m, MonadThrow m, MonadMonotonicTime m, Ord peerAddr) => PeerActionsDNS peerAddr resolver m -> WithLedgerPeersArgs extraAPI m -> ((NumberOfPeers -> LedgerPeersKind -> m (Maybe (Set peerAddr, DiffTime))) -> Async m Void -> m a) -> m a
- data LedgerPeers
- newtype NumberOfPeers = NumberOfPeers {}
- data TraceLedgerPeers
- = PickedBigLedgerPeer RelayAccessPoint AccPoolStake PoolStake
- | PickedLedgerPeer RelayAccessPoint AccPoolStake PoolStake
- | PickedBigLedgerPeers NumberOfPeers [RelayAccessPoint]
- | PickedLedgerPeers NumberOfPeers [RelayAccessPoint]
- | FetchingNewLedgerState Int Int
- | TraceLedgerPeersDomains [RelayAccessPoint]
- | DisabledLedgerPeers
- | TraceUseLedgerPeers UseLedgerPeers
- | WaitingOnRequest
- | RequestForPeers NumberOfPeers
- | ReusingLedgerState Int DiffTime
- | FallingBackToPublicRootPeers
- | NotEnoughBigLedgerPeers NumberOfPeers Int
- | NotEnoughLedgerPeers NumberOfPeers Int
- | UsingBigLedgerPeerSnapshot
- data WithLedgerPeersArgs extraAPI (m :: Type -> Type) = WithLedgerPeersArgs {}
- nullPublicExtraPeersAPI :: Monoid extraPeers => PublicExtraPeersAPI extraPeers peeraddr
- data PeerSource
- data PeerStatus
- data PublicExtraPeersAPI extraPeers peeraddr = PublicExtraPeersAPI {
- nullExtraPeers :: extraPeers -> Bool
- invariantExtraPeers :: extraPeers -> Bool
- memberExtraPeers :: peeraddr -> extraPeers -> Bool
- extraPeersToSet :: extraPeers -> Set peeraddr
- sizeExtraPeers :: extraPeers -> Int
- differenceExtraPeers :: extraPeers -> Set peeraddr -> extraPeers
- intersectionExtraPeers :: extraPeers -> Set peeraddr -> extraPeers
- toAdvertise :: extraPeers -> Map peeraddr PeerAdvertise
- assertPeerSelectionState :: Ord peeraddr => (extraPeers -> Set peeraddr) -> (extraPeers -> Bool) -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> a -> a
- emptyPeerSelectionCounters :: extraCounters -> PeerSelectionCounters extraCounters
- emptyPeerSelectionState :: StdGen -> extraState -> extraPeers -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn
- establishedPeersStatus :: Ord peeraddr => PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> Map peeraddr PeerStatus
- makePublicPeerSelectionStateVar :: (MonadSTM m, Ord peeraddr) => m (StrictTVar m (PublicPeerSelectionState peeraddr))
- nullPeerSelectionTargets :: PeerSelectionTargets
- peerSelectionStateToCounters :: Ord peeraddr => (extraPeers -> Set peeraddr) -> (PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> extraCounters) -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> PeerSelectionCounters extraCounters
- peerSelectionStateToView :: Ord peeraddr => (extraPeers -> Set peeraddr) -> (PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> extraViews) -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> PeerSelectionSetsWithSizes extraViews peeraddr
- sanePeerSelectionTargets :: PeerSelectionTargets -> Bool
- data AssociationMode
- data ChurnAction
- = DecreasedActivePeers
- | IncreasedActivePeers
- | DecreasedActiveBigLedgerPeers
- | IncreasedActiveBigLedgerPeers
- | DecreasedEstablishedPeers
- | IncreasedEstablishedPeers
- | IncreasedEstablishedBigLedgerPeers
- | DecreasedEstablishedBigLedgerPeers
- | DecreasedKnownPeers
- | IncreasedKnownPeers
- | DecreasedKnownBigLedgerPeers
- | IncreasedKnownBigLedgerPeers
- data DebugPeerSelection extraState extraFlags extraPeers peeraddr where
- TraceGovernorState :: forall extraState extraFlags extraPeers peeraddr peerconn. Show peerconn => Time -> Maybe DiffTime -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> DebugPeerSelection extraState extraFlags extraPeers peeraddr
- data PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn (m :: Type -> Type) = PeerSelectionActions {
- peerSelectionTargets :: PeerSelectionTargets
- readPeerSelectionTargets :: STM m PeerSelectionTargets
- readLocalRootPeersFromFile :: STM m (Config extraFlags RelayAccessPoint)
- readLocalRootPeers :: STM m (Config extraFlags peeraddr)
- readInboundPeers :: m (Map peeraddr PeerSharing)
- peerSharing :: PeerSharing
- peerConnToPeerSharing :: peerconn -> PeerSharing
- extraPeersAPI :: PublicExtraPeersAPI extraPeers peeraddr
- extraStateToExtraCounters :: PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> extraCounters
- requestPublicRootPeers :: LedgerPeersKind -> StdGen -> Int -> m (PublicRootPeers extraPeers peeraddr, DiffTime)
- requestPeerShare :: PeerSharingAmount -> peeraddr -> m (PeerSharingResult peeraddr)
- peerStateActions :: PeerStateActions peeraddr peerconn m
- getLedgerStateCtx :: LedgerPeersConsensusInterface extraAPI m
- readLedgerPeerSnapshot :: STM m (Maybe LedgerPeerSnapshot)
- type PeerSelectionCounters extraCounters = PeerSelectionView extraCounters Int
- data PeerSelectionView extraViews a where
- PeerSelectionView {
- viewRootPeers :: a
- viewKnownPeers :: a
- viewAvailableToConnectPeers :: a
- viewColdPeersPromotions :: a
- viewEstablishedPeers :: a
- viewWarmPeersDemotions :: a
- viewWarmPeersPromotions :: a
- viewActivePeers :: a
- viewActivePeersDemotions :: a
- viewKnownBigLedgerPeers :: a
- viewAvailableToConnectBigLedgerPeers :: a
- viewColdBigLedgerPeersPromotions :: a
- viewEstablishedBigLedgerPeers :: a
- viewWarmBigLedgerPeersDemotions :: a
- viewWarmBigLedgerPeersPromotions :: a
- viewActiveBigLedgerPeers :: a
- viewActiveBigLedgerPeersDemotions :: a
- viewKnownLocalRootPeers :: a
- viewAvailableToConnectLocalRootPeers :: a
- viewColdLocalRootPeersPromotions :: a
- viewEstablishedLocalRootPeers :: a
- viewWarmLocalRootPeersPromotions :: a
- viewActiveLocalRootPeers :: a
- viewActiveLocalRootPeersDemotions :: a
- viewKnownNonRootPeers :: a
- viewColdNonRootPeersPromotions :: a
- viewEstablishedNonRootPeers :: a
- viewWarmNonRootPeersDemotions :: a
- viewWarmNonRootPeersPromotions :: a
- viewActiveNonRootPeers :: a
- viewActiveNonRootPeersDemotions :: a
- viewExtraViews :: extraViews
- pattern PeerSelectionCounters :: Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> extraCounters -> PeerSelectionCounters extraCounters
- pattern PeerSelectionCountersHWC :: Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> PeerSelectionCounters extraCounters
- PeerSelectionView {
- data PeerSelectionGovernorArgs extraState extraDebugState extraFlags extraPeers extraAPI extraCounters extraTrace peeraddr peerconn exception (m :: Type -> Type) = PeerSelectionGovernorArgs {
- abortGovernor :: Time -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> Maybe exception
- updateWithState :: PeerSelectionInterfaces extraState extraFlags extraPeers extraCounters peeraddr peerconn m -> PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m -> PeerSelectionSetsWithSizes extraCounters peeraddr -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> STM m ()
- extraDecisions :: ExtraGuardedDecisions extraState extraDebugState extraFlags extraPeers extraAPI extraCounters extraTrace peeraddr peerconn m
- data PeerSelectionInterfaces extraState extraFlags extraPeers extraCounters peeraddr peerconn (m :: Type -> Type) = PeerSelectionInterfaces {
- countersVar :: StrictTVar m (PeerSelectionCounters extraCounters)
- publicStateVar :: StrictTVar m (PublicPeerSelectionState peeraddr)
- debugStateVar :: StrictTVar m (PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn)
- readUseLedgerPeers :: STM m UseLedgerPeers
- data PeerSelectionPolicy peeraddr (m :: Type -> Type) = PeerSelectionPolicy {
- policyPickKnownPeersForPeerShare :: PickPolicy peeraddr (STM m)
- policyPickColdPeersToPromote :: PickPolicy peeraddr (STM m)
- policyPickWarmPeersToPromote :: PickPolicy peeraddr (STM m)
- policyPickHotPeersToDemote :: PickPolicy peeraddr (STM m)
- policyPickWarmPeersToDemote :: PickPolicy peeraddr (STM m)
- policyPickColdPeersToForget :: PickPolicy peeraddr (STM m)
- policyPickInboundPeers :: PickPolicy peeraddr (STM m)
- policyFindPublicRootTimeout :: !DiffTime
- policyMaxInProgressPeerShareReqs :: !Int
- policyPeerShareRetryTime :: !DiffTime
- policyPeerShareBatchWaitTime :: !DiffTime
- policyPeerShareOverallTimeout :: !DiffTime
- policyPeerShareActivationDelay :: !DiffTime
- type PeerSelectionSetsWithSizes extraViews peeraddr = PeerSelectionView extraViews (Set peeraddr, Int)
- data PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn
- data PeerSelectionTargets = PeerSelectionTargets {}
- data PeerStateActions peeraddr peerconn (m :: Type -> Type) = PeerStateActions {
- monitorPeerConnection :: peerconn -> STM m (PeerStatus, Maybe RepromoteDelay)
- establishPeerConnection :: IsBigLedgerPeer -> DiffusionMode -> peeraddr -> m peerconn
- activatePeerConnection :: IsBigLedgerPeer -> peerconn -> m ()
- deactivatePeerConnection :: peerconn -> m ()
- closePeerConnection :: peerconn -> m ()
- errorDelay :: RepromoteDelay
- type PickPolicy peeraddr (m :: Type -> Type) = (peeraddr -> PeerSource) -> (peeraddr -> Int) -> (peeraddr -> Bool) -> Set peeraddr -> Int -> m (Set peeraddr)
- newtype PublicPeerSelectionState peeraddr = PublicPeerSelectionState {
- availableToShare :: Set peeraddr
- data TracePeerSelection extraDebugState extraFlags extraPeers extraTrace peeraddr
- = TraceLocalRootPeersChanged (LocalRootPeers extraFlags peeraddr) (LocalRootPeers extraFlags peeraddr)
- | TraceTargetsChanged PeerSelectionTargets PeerSelectionTargets
- | TracePublicRootsRequest Int Int
- | TracePublicRootsResults (PublicRootPeers extraPeers peeraddr) Int DiffTime
- | TracePublicRootsFailure SomeException Int DiffTime
- | TraceForgetColdPeers Int Int (Set peeraddr)
- | TraceBigLedgerPeersRequest Int Int
- | TraceBigLedgerPeersResults (Set peeraddr) Int DiffTime
- | TraceBigLedgerPeersFailure SomeException Int DiffTime
- | TraceForgetBigLedgerPeers Int Int (Set peeraddr)
- | TracePeerShareRequests Int Int PeerSharingAmount (Set peeraddr) (Set peeraddr)
- | TracePeerShareResults [(peeraddr, Either SomeException (PeerSharingResult peeraddr))]
- | TracePeerShareResultsFiltered [peeraddr]
- | TracePickInboundPeers Int Int (Map peeraddr PeerSharing) (Set peeraddr)
- | TracePromoteColdPeers Int Int (Set peeraddr)
- | TracePromoteColdLocalPeers [(WarmValency, Int)] (Set peeraddr)
- | TracePromoteColdFailed Int Int peeraddr DiffTime SomeException
- | TracePromoteColdDone Int Int peeraddr
- | TracePromoteColdBigLedgerPeers Int Int (Set peeraddr)
- | TracePromoteColdBigLedgerPeerFailed Int Int peeraddr DiffTime SomeException
- | TracePromoteColdBigLedgerPeerDone Int Int peeraddr
- | TracePromoteWarmPeers Int Int (Set peeraddr)
- | TracePromoteWarmLocalPeers [(HotValency, Int)] (Set peeraddr)
- | TracePromoteWarmFailed Int Int peeraddr SomeException
- | TracePromoteWarmDone Int Int peeraddr
- | TracePromoteWarmAborted Int Int peeraddr
- | TracePromoteWarmBigLedgerPeers Int Int (Set peeraddr)
- | TracePromoteWarmBigLedgerPeerFailed Int Int peeraddr SomeException
- | TracePromoteWarmBigLedgerPeerDone Int Int peeraddr
- | TracePromoteWarmBigLedgerPeerAborted Int Int peeraddr
- | TraceDemoteWarmPeers Int Int (Set peeraddr)
- | TraceDemoteWarmFailed Int Int peeraddr SomeException
- | TraceDemoteWarmDone Int Int peeraddr
- | TraceDemoteWarmBigLedgerPeers Int Int (Set peeraddr)
- | TraceDemoteWarmBigLedgerPeerFailed Int Int peeraddr SomeException
- | TraceDemoteWarmBigLedgerPeerDone Int Int peeraddr
- | TraceDemoteHotPeers Int Int (Set peeraddr)
- | TraceDemoteLocalHotPeers [(HotValency, Int)] (Set peeraddr)
- | TraceDemoteHotFailed Int Int peeraddr SomeException
- | TraceDemoteHotDone Int Int peeraddr
- | TraceDemoteHotBigLedgerPeers Int Int (Set peeraddr)
- | TraceDemoteHotBigLedgerPeerFailed Int Int peeraddr SomeException
- | TraceDemoteHotBigLedgerPeerDone Int Int peeraddr
- | TraceDemoteAsynchronous (Map peeraddr (PeerStatus, Maybe RepromoteDelay))
- | TraceDemoteLocalAsynchronous (Map peeraddr (PeerStatus, Maybe RepromoteDelay))
- | TraceDemoteBigLedgerPeersAsynchronous (Map peeraddr (PeerStatus, Maybe RepromoteDelay))
- | TraceGovernorWakeup
- | TraceChurnWait DiffTime
- | TraceChurnAction DiffTime ChurnAction Int
- | TraceChurnTimeout DiffTime ChurnAction Int
- | TraceOnlyBootstrapPeers
- | TraceBootstrapPeersFlagChangedWhilstInSensitiveState
- | TraceVerifyPeerSnapshot Bool
- | TraceOutboundGovernorCriticalFailure SomeException
- | TraceDebugState Time (DebugPeerSelectionState extraDebugState extraFlags extraPeers peeraddr)
- | ExtraTrace extraTrace
- data PeerSharingResult peerAddress
- = PeerSharingResult [peerAddress]
- | PeerSharingNotRegisteredYet
- newtype PeerSharingAmount = PeerSharingAmount {}
- getPromotedHotTime :: forall (m :: Type -> Type) (muxMode :: Mode) responderCtx peerAddr versionData bytes a b. MonadSTM m => PeerConnectionHandle muxMode responderCtx peerAddr versionData bytes m a b -> STM m (Maybe Time)
- pchPeerSharing :: forall versionData (muxMode :: Mode) responderCtx peerAddr bytes (m :: Type -> Type) a b. (versionData -> PeerSharing) -> PeerConnectionHandle muxMode responderCtx peerAddr versionData bytes m a b -> PeerSharing
- withPeerStateActions :: forall (muxMode :: Mode) socket responderCtx peerAddr versionData versionNumber m a b x. (Alternative (STM m), MonadAsync m, MonadCatch m, MonadLabelledSTM m, MonadFork m, MonadMask m, MonadTimer m, MonadThrow (STM m), HasInitiator muxMode ~ 'True, Typeable versionNumber, Show versionNumber, Ord peerAddr, Typeable peerAddr, Show peerAddr) => PeerStateActionsArguments muxMode socket responderCtx peerAddr versionData versionNumber m a b -> (PeerStateActions peerAddr (PeerConnectionHandle muxMode responderCtx peerAddr versionData ByteString m a b) m -> m x) -> m x
- data EstablishConnectionException versionNumber
- = ClientException !(HandshakeException versionNumber)
- | ServerException !(HandshakeException versionNumber)
- data FailureType versionNumber
- = HandshakeClientFailure !(HandshakeException versionNumber)
- | HandshakeServerFailure !(HandshakeException versionNumber)
- | HandleFailure !SomeException
- | MuxStoppedFailure
- | TimeoutError
- | ActiveCold !PeerStatus
- | ApplicationFailure ![MiniProtocolException]
- data MonitorPeerConnectionBlocked = MonitorPeerConnectionBlocked
- data PeerConnectionHandle (muxMode :: Mode) responderCtx peerAddr versionData bytes (m :: Type -> Type) a b
- data PeerSelectionActionException = Exception e => PeerSelectionActionException e
- data PeerSelectionActionsTrace peerAddr vNumber
- = PeerStatusChanged (PeerStatusChangeType peerAddr)
- | PeerStatusChangeFailure (PeerStatusChangeType peerAddr) (FailureType vNumber)
- | PeerMonitoringError (ConnectionId peerAddr) SomeException
- | PeerMonitoringResult (ConnectionId peerAddr) (Maybe (WithSomeProtocolTemperature FirstToFinishResult))
- | AcquireConnectionError SomeException
- | PeerHotDuration (ConnectionId peerAddr) DiffTime
- data PeerSelectionTimeoutException peerAddr = DeactivationTimeout !(ConnectionId peerAddr)
- data PeerStateActionsArguments (muxMode :: Mode) socket responderCtx peerAddr versionData versionNumber (m :: Type -> Type) a b = PeerStateActionsArguments {
- spsTracer :: Tracer m (PeerSelectionActionsTrace peerAddr versionNumber)
- spsDeactivateTimeout :: DiffTime
- spsCloseConnectionTimeout :: DiffTime
- spsConnectionManager :: MuxConnectionManager muxMode socket (ExpandedInitiatorContext peerAddr m) responderCtx peerAddr versionData versionNumber ByteString m a b
- spsExitPolicy :: ExitPolicy a
- spsRethrowPolicy :: RethrowPolicy
- spsMainThreadId :: ThreadId m
- data PeerStatusChangeType peerAddr
- = ColdToWarm !(Maybe peerAddr) !peerAddr
- | WarmToHot !(ConnectionId peerAddr)
- | HotToWarm !(ConnectionId peerAddr)
- | WarmToCooling !(ConnectionId peerAddr)
- | HotToCooling !(ConnectionId peerAddr)
- | CoolingToCold !(ConnectionId peerAddr)
- peerSelectionGovernor :: (Alternative (STM m), MonadAsync m, MonadDelay m, MonadLabelledSTM m, MonadMask m, MonadTimer m, Ord peeraddr, Show peerconn, Hashable peeraddr, Exception exception, Eq extraCounters, Semigroup extraPeers, Eq extraFlags) => Tracer m (TracePeerSelection extraDebugState extraFlags extraPeers extraTrace peeraddr) -> Tracer m (DebugPeerSelection extraState extraFlags extraPeers peeraddr) -> Tracer m (PeerSelectionCounters extraCounters) -> PeerSelectionGovernorArgs extraState extraDebugState extraFlags extraPeers extraAPI extraCounters extraTrace peeraddr peerconn exception m -> StdGen -> extraState -> extraPeers -> PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m -> PeerSelectionPolicy peeraddr m -> PeerSelectionInterfaces extraState extraFlags extraPeers extraCounters peeraddr peerconn m -> m Void
- requestPeerSharingResult :: (MonadSTM m, MonadMVar m, Ord peeraddr) => STM m (Map peeraddr (PeerSharingController peeraddr m)) -> PeerSharingAmount -> peeraddr -> m (PeerSharingResult peeraddr)
- withPeerSelectionActions :: forall extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn resolver m a. (Alternative (STM m), MonadAsync m, MonadDelay m, MonadThrow m, Ord peeraddr, Eq extraFlags) => Tracer m (TraceLocalRootPeers extraFlags peeraddr) -> StrictTVar m (Config extraFlags peeraddr) -> PeerActionsDNS peeraddr resolver m -> ((NumberOfPeers -> LedgerPeersKind -> m (Maybe (Set peeraddr, DiffTime))) -> PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m) -> WithLedgerPeersArgs extraAPI m -> StdGen -> ((Async m Void, Async m Void) -> PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m -> m a) -> m a
Documentation
peerChurnGovernor :: forall m extraState extraFlags extraCounters extraPeers peeraddr. (MonadDelay m, Alternative (STM m), MonadTimer m, MonadCatch m) => PeerChurnArgs m (ExtraArguments m) extraState extraFlags extraPeers (LedgerPeersConsensusInterface m) 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.
data DebugPeerSelectionState Source #
Constructors
| DebugPeerSelectionState | |
Instances
| Show DebugPeerSelectionState Source # | |
Defined in Cardano.Network.PeerSelection.Governor.PeerSelectionState Methods showsPrec :: Int -> DebugPeerSelectionState -> ShowS # show :: DebugPeerSelectionState -> String # showList :: [DebugPeerSelectionState] -> ShowS # | |
data UseBootstrapPeers #
Constructors
| DontUseBootstrapPeers | |
| UseBootstrapPeers [RelayAccessPoint] |
Instances
Constructors
| ChurnModeBulkSync | |
| ChurnModeNormal |
data PeerTrustable #
Constructors
| IsTrustable | |
| IsNotTrustable |
Instances
| Generic PeerTrustable | |||||
Defined in Cardano.Network.PeerSelection.PeerTrustable Associated Types
| |||||
| Show PeerTrustable | |||||
Defined in Cardano.Network.PeerSelection.PeerTrustable Methods showsPrec :: Int -> PeerTrustable -> ShowS # show :: PeerTrustable -> String # showList :: [PeerTrustable] -> ShowS # | |||||
| Eq PeerTrustable | |||||
Defined in Cardano.Network.PeerSelection.PeerTrustable Methods (==) :: PeerTrustable -> PeerTrustable -> Bool # (/=) :: PeerTrustable -> PeerTrustable -> Bool # | |||||
| Ord PeerTrustable | |||||
Defined in Cardano.Network.PeerSelection.PeerTrustable Methods compare :: PeerTrustable -> PeerTrustable -> Ordering # (<) :: PeerTrustable -> PeerTrustable -> Bool # (<=) :: PeerTrustable -> PeerTrustable -> Bool # (>) :: PeerTrustable -> PeerTrustable -> Bool # (>=) :: PeerTrustable -> PeerTrustable -> Bool # max :: PeerTrustable -> PeerTrustable -> PeerTrustable # min :: PeerTrustable -> PeerTrustable -> PeerTrustable # | |||||
| type Rep PeerTrustable | |||||
Defined in Cardano.Network.PeerSelection.PeerTrustable | |||||
newtype TraceChurnMode Source #
Constructors
| TraceChurnMode ChurnMode |
Instances
| Show TraceChurnMode Source # | |
Defined in Cardano.Network.PeerSelection.Churn Methods showsPrec :: Int -> TraceChurnMode -> ShowS # show :: TraceChurnMode -> String # showList :: [TraceChurnMode] -> ShowS # | |
data OutboundConnectionsState #
Constructors
| TrustedStateWithExternalPeers | |
| UntrustedState |
Instances
| Generic OutboundConnectionsState | |||||
Defined in Cardano.Network.PeerSelection.LocalRootPeers Associated Types
Methods from :: OutboundConnectionsState -> Rep OutboundConnectionsState x # to :: Rep OutboundConnectionsState x -> OutboundConnectionsState # | |||||
| Show OutboundConnectionsState | |||||
Defined in Cardano.Network.PeerSelection.LocalRootPeers Methods showsPrec :: Int -> OutboundConnectionsState -> ShowS # show :: OutboundConnectionsState -> String # showList :: [OutboundConnectionsState] -> ShowS # | |||||
| Eq OutboundConnectionsState | |||||
Defined in Cardano.Network.PeerSelection.LocalRootPeers Methods (==) :: OutboundConnectionsState -> OutboundConnectionsState -> Bool # (/=) :: OutboundConnectionsState -> OutboundConnectionsState -> Bool # | |||||
| NoThunks OutboundConnectionsState | |||||
Defined in Cardano.Network.PeerSelection.LocalRootPeers | |||||
| type Rep OutboundConnectionsState | |||||
Defined in Cardano.Network.PeerSelection.LocalRootPeers type Rep OutboundConnectionsState = D1 ('MetaData "OutboundConnectionsState" "Cardano.Network.PeerSelection.LocalRootPeers" "cardano-diffusion-0.1.0.0-inplace-api" 'False) (C1 ('MetaCons "TrustedStateWithExternalPeers" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "UntrustedState" 'PrefixI 'False) (U1 :: Type -> Type)) | |||||
data ExtraArguments (m :: Type -> Type) Source #
Cardano Churn Extra Arguments
data ExtraPeers peeraddr Source #
Constructors
| ExtraPeers | |
Fields
| |
Instances
| Ord peeraddr => Monoid (ExtraPeers peeraddr) Source # | |
Defined in Cardano.Network.PeerSelection.ExtraRootPeers Methods mempty :: ExtraPeers peeraddr # mappend :: ExtraPeers peeraddr -> ExtraPeers peeraddr -> ExtraPeers peeraddr # mconcat :: [ExtraPeers peeraddr] -> ExtraPeers peeraddr # | |
| Ord peeraddr => Monoid (CardanoPublicRootPeers peeraddr) Source # | |
Defined in Cardano.Network.PeerSelection.PublicRootPeers Methods mempty :: CardanoPublicRootPeers peeraddr # mappend :: CardanoPublicRootPeers peeraddr -> CardanoPublicRootPeers peeraddr -> CardanoPublicRootPeers peeraddr # mconcat :: [CardanoPublicRootPeers peeraddr] -> CardanoPublicRootPeers peeraddr # | |
| Ord peeraddr => Semigroup (ExtraPeers peeraddr) Source # | |
Defined in Cardano.Network.PeerSelection.ExtraRootPeers Methods (<>) :: ExtraPeers peeraddr -> ExtraPeers peeraddr -> ExtraPeers peeraddr # sconcat :: NonEmpty (ExtraPeers peeraddr) -> ExtraPeers peeraddr # stimes :: Integral b => b -> ExtraPeers peeraddr -> ExtraPeers peeraddr # | |
| Ord peeraddr => Semigroup (CardanoPublicRootPeers peeraddr) Source # | |
Defined in Cardano.Network.PeerSelection.PublicRootPeers Methods (<>) :: CardanoPublicRootPeers peeraddr -> CardanoPublicRootPeers peeraddr -> CardanoPublicRootPeers peeraddr # sconcat :: NonEmpty (CardanoPublicRootPeers peeraddr) -> CardanoPublicRootPeers peeraddr # stimes :: Integral b => b -> CardanoPublicRootPeers peeraddr -> CardanoPublicRootPeers peeraddr # | |
| Show peeraddr => Show (ExtraPeers peeraddr) Source # | |
Defined in Cardano.Network.PeerSelection.ExtraRootPeers Methods showsPrec :: Int -> ExtraPeers peeraddr -> ShowS # show :: ExtraPeers peeraddr -> String # showList :: [ExtraPeers peeraddr] -> ShowS # | |
| Eq peeraddr => Eq (ExtraPeers peeraddr) Source # | |
Defined in Cardano.Network.PeerSelection.ExtraRootPeers Methods (==) :: ExtraPeers peeraddr -> ExtraPeers peeraddr -> Bool # (/=) :: ExtraPeers peeraddr -> ExtraPeers peeraddr -> Bool # | |
data ExtraState Source #
Cardano Node PeerSelection State extension data type. It contain specific PeerSelection state parameters to guide the Outbound Governor.
Instances
| Show ExtraState Source # | |
Defined in Cardano.Network.PeerSelection.Governor.PeerSelectionState Methods showsPrec :: Int -> ExtraState -> ShowS # show :: ExtraState -> String # showList :: [ExtraState] -> ShowS # | |
| Eq ExtraState Source # | |
type CardanoPublicRootPeers peeraddr = PublicRootPeers (ExtraPeers peeraddr) peeraddr Source #
A unified IP data for IPv4 and IPv6.
To create this, use the data constructors. Or use read "192.0.2.1" :: IP, for example. Also, "192.0.2.1" can be used as literal with OverloadedStrings.
>>>(read "192.0.2.1" :: IP) == IPv4 (read "192.0.2.1" :: IPv4)True>>>(read "2001:db8:00:00:00:00:00:01" :: IP) == IPv6 (read "2001:db8:00:00:00:00:00:01" :: IPv6)True
Instances
| Data IP | |||||
Defined in Data.IP.Addr Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> IP -> c IP # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c IP # dataTypeOf :: IP -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c IP) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c IP) # gmapT :: (forall b. Data b => b -> b) -> IP -> IP # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> IP -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> IP -> r # gmapQ :: (forall d. Data d => d -> u) -> IP -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> IP -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> IP -> m IP # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> IP -> m IP # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> IP -> m IP # | |||||
| IsString IP | |||||
Defined in Data.IP.Addr Methods fromString :: String -> IP # | |||||
| Enum IP | |||||
| Generic IP | |||||
Defined in Data.IP.Addr Associated Types
| |||||
| Read IP | |||||
| Show IP | |||||
| Eq IP | Equality over IP addresses. Correctly compare IPv4 and IPv4-embedded-in-IPv6 addresses.
| ||||
| Ord IP | |||||
| type Rep IP | |||||
Defined in Data.IP.Addr type Rep IP = D1 ('MetaData "IP" "Data.IP.Addr" "iproute-1.7.15-d5020d24d1fe15220cb41e27ce018ccc062a41d296f3d923395579b023e1828e" 'False) (C1 ('MetaCons "IPv4" 'PrefixI 'True) (S1 ('MetaSel ('Just "ipv4") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedUnpack) (Rec0 IPv4)) :+: C1 ('MetaCons "IPv6" 'PrefixI 'True) (S1 ('MetaSel ('Just "ipv6") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 IPv6))) | |||||
data PortNumber #
Port number.
Use the Num instance (i.e. use a literal) to create a
PortNumber value.
>>>1 :: PortNumber1>>>read "1" :: PortNumber1>>>show (12345 :: PortNumber)"12345">>>50000 < (51000 :: PortNumber)True>>>50000 < (52000 :: PortNumber)True>>>50000 + (10000 :: PortNumber)60000
Instances
| Bounded PortNumber | |
Defined in Network.Socket.Types | |
| Enum PortNumber | |
Defined in Network.Socket.Types Methods succ :: PortNumber -> PortNumber # pred :: PortNumber -> PortNumber # toEnum :: Int -> PortNumber # fromEnum :: PortNumber -> Int # enumFrom :: PortNumber -> [PortNumber] # enumFromThen :: PortNumber -> PortNumber -> [PortNumber] # enumFromTo :: PortNumber -> PortNumber -> [PortNumber] # enumFromThenTo :: PortNumber -> PortNumber -> PortNumber -> [PortNumber] # | |
| Storable PortNumber | |
Defined in Network.Socket.Types Methods sizeOf :: PortNumber -> Int # alignment :: PortNumber -> Int # peekElemOff :: Ptr PortNumber -> Int -> IO PortNumber # pokeElemOff :: Ptr PortNumber -> Int -> PortNumber -> IO () # peekByteOff :: Ptr b -> Int -> IO PortNumber # pokeByteOff :: Ptr b -> Int -> PortNumber -> IO () # peek :: Ptr PortNumber -> IO PortNumber # poke :: Ptr PortNumber -> PortNumber -> IO () # | |
| Num PortNumber | |
Defined in Network.Socket.Types Methods (+) :: PortNumber -> PortNumber -> PortNumber # (-) :: PortNumber -> PortNumber -> PortNumber # (*) :: PortNumber -> PortNumber -> PortNumber # negate :: PortNumber -> PortNumber # abs :: PortNumber -> PortNumber # signum :: PortNumber -> PortNumber # fromInteger :: Integer -> PortNumber # | |
| Read PortNumber | |
Defined in Network.Socket.Types Methods readsPrec :: Int -> ReadS PortNumber # readList :: ReadS [PortNumber] # readPrec :: ReadPrec PortNumber # readListPrec :: ReadPrec [PortNumber] # | |
| Integral PortNumber | |
Defined in Network.Socket.Types Methods quot :: PortNumber -> PortNumber -> PortNumber # rem :: PortNumber -> PortNumber -> PortNumber # div :: PortNumber -> PortNumber -> PortNumber # mod :: PortNumber -> PortNumber -> PortNumber # quotRem :: PortNumber -> PortNumber -> (PortNumber, PortNumber) # divMod :: PortNumber -> PortNumber -> (PortNumber, PortNumber) # toInteger :: PortNumber -> Integer # | |
| Real PortNumber | |
Defined in Network.Socket.Types Methods toRational :: PortNumber -> Rational # | |
| Show PortNumber | |
Defined in Network.Socket.Types Methods showsPrec :: Int -> PortNumber -> ShowS # show :: PortNumber -> String # showList :: [PortNumber] -> ShowS # | |
| Eq PortNumber | |
Defined in Network.Socket.Types | |
| Ord PortNumber | |
Defined in Network.Socket.Types Methods compare :: PortNumber -> PortNumber -> Ordering # (<) :: PortNumber -> PortNumber -> Bool # (<=) :: PortNumber -> PortNumber -> Bool # (>) :: PortNumber -> PortNumber -> Bool # (>=) :: PortNumber -> PortNumber -> Bool # max :: PortNumber -> PortNumber -> PortNumber # min :: PortNumber -> PortNumber -> PortNumber # | |
data ReportPeerMetrics (m :: Type -> Type) peerAddr #
Constructors
| ReportPeerMetrics | |
Fields
| |
newPeerMetric :: (MonadLabelledSTM m, NoThunks p, NFData p) => PeerMetricsConfiguration -> m (PeerMetrics m p) #
newPeerMetric' :: (MonadLabelledSTM m, NoThunks p, NFData p) => SlotMetric p -> SlotMetric (p, SizeInBytes) -> PeerMetricsConfiguration -> m (PeerMetrics m p) #
nullMetric :: forall (m :: Type -> Type) p. MonadSTM m => ReportPeerMetrics m p #
reportMetric :: forall (m :: Type -> Type) p. (MonadSTM m, Ord p) => PeerMetricsConfiguration -> PeerMetrics m p -> ReportPeerMetrics m (ConnectionId p) #
data PeerMetrics (m :: Type -> Type) p #
Mutable peer metrics state accessible via STM.
newtype PeerMetricsConfiguration #
Constructors
| PeerMetricsConfiguration | |
Fields
| |
Instances
| NFData PeerMetricsConfiguration | |||||
Defined in Ouroboros.Network.PeerSelection.PeerMetric Methods rnf :: PeerMetricsConfiguration -> () # | |||||
| Generic PeerMetricsConfiguration | |||||
Defined in Ouroboros.Network.PeerSelection.PeerMetric Associated Types
Methods from :: PeerMetricsConfiguration -> Rep PeerMetricsConfiguration x # to :: Rep PeerMetricsConfiguration x -> PeerMetricsConfiguration # | |||||
| Show PeerMetricsConfiguration | |||||
Defined in Ouroboros.Network.PeerSelection.PeerMetric Methods showsPrec :: Int -> PeerMetricsConfiguration -> ShowS # show :: PeerMetricsConfiguration -> String # showList :: [PeerMetricsConfiguration] -> ShowS # | |||||
| NoThunks PeerMetricsConfiguration | |||||
Defined in Ouroboros.Network.PeerSelection.PeerMetric | |||||
| type Rep PeerMetricsConfiguration | |||||
Defined in Ouroboros.Network.PeerSelection.PeerMetric type Rep PeerMetricsConfiguration = D1 ('MetaData "PeerMetricsConfiguration" "Ouroboros.Network.PeerSelection.PeerMetric" "ouroboros-network-0.23.0.0-inplace" 'True) (C1 ('MetaCons "PeerMetricsConfiguration" 'PrefixI 'True) (S1 ('MetaSel ('Just "maxEntriesToTrack") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int))) | |||||
data PublicRootPeers extraPeers peeraddr #
Public Root Peers consist of either a set of manually configured bootstrap peers.
There's an implicit precedence that will priorise bootstrap peers over the other sets, so if we are adding a bootstrap peer and that peer is already a member of other public root set, it is going to be removed from that set and added to the bootstrap peer set.
Instances
| Ord peeraddr => Monoid (CardanoPublicRootPeers peeraddr) Source # | |
Defined in Cardano.Network.PeerSelection.PublicRootPeers Methods mempty :: CardanoPublicRootPeers peeraddr # mappend :: CardanoPublicRootPeers peeraddr -> CardanoPublicRootPeers peeraddr -> CardanoPublicRootPeers peeraddr # mconcat :: [CardanoPublicRootPeers peeraddr] -> CardanoPublicRootPeers peeraddr # | |
| Ord peeraddr => Semigroup (CardanoPublicRootPeers peeraddr) Source # | |
Defined in Cardano.Network.PeerSelection.PublicRootPeers Methods (<>) :: CardanoPublicRootPeers peeraddr -> CardanoPublicRootPeers peeraddr -> CardanoPublicRootPeers peeraddr # sconcat :: NonEmpty (CardanoPublicRootPeers peeraddr) -> CardanoPublicRootPeers peeraddr # stimes :: Integral b => b -> CardanoPublicRootPeers peeraddr -> CardanoPublicRootPeers peeraddr # | |
| (Show peeraddr, Show extraPeers) => Show (PublicRootPeers extraPeers peeraddr) | |
Defined in Ouroboros.Network.PeerSelection.PublicRootPeers Methods showsPrec :: Int -> PublicRootPeers extraPeers peeraddr -> ShowS # show :: PublicRootPeers extraPeers peeraddr -> String # showList :: [PublicRootPeers extraPeers peeraddr] -> ShowS # | |
| (Eq peeraddr, Eq extraPeers) => Eq (PublicRootPeers extraPeers peeraddr) | |
Defined in Ouroboros.Network.PeerSelection.PublicRootPeers Methods (==) :: PublicRootPeers extraPeers peeraddr -> PublicRootPeers extraPeers peeraddr -> Bool # (/=) :: PublicRootPeers extraPeers peeraddr -> PublicRootPeers extraPeers peeraddr -> Bool # | |
constantResource :: forall (m :: Type -> Type) a. Applicative m => a -> Resource m a #
dispatchLookupWithTTL :: MonadAsync m => DNSLookupType -> (resolver -> resolvConf -> Domain -> TYPE -> m (Maybe (Either DNSError DNSMessage))) -> Tracer m DNSTrace -> (IP -> PortNumber -> peerAddr) -> DNSPeersKind -> RelayAccessPoint -> resolvConf -> resolver -> StdGen -> m (DNSLookupResult peerAddr) #
ioDNSActions :: Tracer IO DNSTrace -> DNSLookupType -> (IP -> PortNumber -> peerAddr) -> DNSActions peerAddr Resolver IO #
IO DNSActions which resolve domain names with Resolver.
The IPv4 and IPv6 addresses the node will be using should determine the LookupReqs so that we can avoid lookups for address types that wont be used.
It guarantees that returned TTLs are strictly greater than 0.
retryResource :: forall (m :: Type -> Type) e a. MonadDelay m => Tracer m e -> NonEmpty DiffTime -> Resource m (Either e a) -> Resource m a #
data DNSActions peerAddr resolver (m :: Type -> Type) #
Dictionary of DNS actions vocabulary
Constructors
| DNSActions | |
Fields
| |
type DNSLookupResult peerAddr = Either [DNSError] [(peerAddr, TTL)] #
Wraps lookup result for client code
Provides DNS lookup trace information
Constructors
| DNSLookupResult | DNS lookup result |
Fields
| |
| DNSLookupError DNSPeersKind (Maybe DNSLookupType) Domain DNSError |
|
| SRVLookupResult DNSPeersKind Domain [(Domain, Word16, Word16, Word16, TTL)] | |
| SRVLookupError |
|
Fields
| |
data DNSLookupType #
Constructors
| LookupReqAOnly | |
| LookupReqAAAAOnly | |
| LookupReqAAndAAAA |
Instances
| Show DNSLookupType | |
Defined in Ouroboros.Network.PeerSelection.RootPeersDNS.DNSActions Methods showsPrec :: Int -> DNSLookupType -> ShowS # show :: DNSLookupType -> String # showList :: [DNSLookupType] -> ShowS # | |
data DNSPeersKind #
Bundled with DNS lookup trace for observability
Constructors
| DNSLocalPeer | |
| DNSPublicPeer | |
| DNSLedgerPeer LedgerPeersKind |
Instances
| Show DNSPeersKind | |
Defined in Ouroboros.Network.PeerSelection.RootPeersDNS.DNSActions Methods showsPrec :: Int -> DNSPeersKind -> ShowS # show :: DNSPeersKind -> String # showList :: [DNSPeersKind] -> ShowS # | |
data DNSorIOError #
Instances
| Exception DNSorIOError | |
Defined in Ouroboros.Network.PeerSelection.RootPeersDNS.DNSActions Methods toException :: DNSorIOError -> SomeException # fromException :: SomeException -> Maybe DNSorIOError # displayException :: DNSorIOError -> String # backtraceDesired :: DNSorIOError -> Bool # | |
| Show DNSorIOError | |
Defined in Ouroboros.Network.PeerSelection.RootPeersDNS.DNSActions Methods showsPrec :: Int -> DNSorIOError -> ShowS # show :: DNSorIOError -> String # showList :: [DNSorIOError] -> ShowS # | |
data PeerActionsDNS peeraddr resolver (m :: Type -> Type) #
Record of some parameters that are commonly used together
TODO: rename as PeerDNSActions; can we bundle paToPeerAddr with
DNSActions?
Constructors
| PeerActionsDNS | |
Fields
| |
newtype Resource (m :: Type -> Type) a #
Evolving resource; We use it to reinitialise the DNS library if the `etcresolv.conf` file was modified.
Note: constantResource and retryResource are written using a simplified approach
inspired by _"The Different Aspects of Monads and Mixins"_, by Bruno C. d S.
Oliveira, see https://www.youtube.com/watch?v=pfwP4hXM5hA.
Constructors
| Resource | |
Fields
| |
data LedgerPeersKind #
Constructors
| AllLedgerPeers | |
| BigLedgerPeers |
Instances
| Show LedgerPeersKind | |
Defined in Ouroboros.Network.PeerSelection.LedgerPeers.Type Methods showsPrec :: Int -> LedgerPeersKind -> ShowS # show :: LedgerPeersKind -> String # showList :: [LedgerPeersKind] -> ShowS # | |
data RelayAccessPoint #
Constructors
| RelayAccessDomain !Domain !PortNumber | |
| RelayAccessSRVDomain !Domain | |
| RelayAccessAddress !IP !PortNumber |
Instances
| FromJSON RelayAccessPoint | |
Defined in Ouroboros.Network.PeerSelection.RelayAccessPoint Methods parseJSON :: Value -> Parser RelayAccessPoint # parseJSONList :: Value -> Parser [RelayAccessPoint] # | |
| ToJSON RelayAccessPoint | |
Defined in Ouroboros.Network.PeerSelection.RelayAccessPoint Methods toJSON :: RelayAccessPoint -> Value # toEncoding :: RelayAccessPoint -> Encoding # toJSONList :: [RelayAccessPoint] -> Value # toEncodingList :: [RelayAccessPoint] -> Encoding # omitField :: RelayAccessPoint -> Bool # | |
| FromCBOR RelayAccessPoint | |
| ToCBOR RelayAccessPoint | |
Defined in Ouroboros.Network.PeerSelection.RelayAccessPoint Methods toCBOR :: RelayAccessPoint -> Encoding # encodedSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy RelayAccessPoint -> Size # encodedListSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy [RelayAccessPoint] -> Size # | |
| NFData RelayAccessPoint | |
Defined in Ouroboros.Network.PeerSelection.RelayAccessPoint Methods rnf :: RelayAccessPoint -> () # | |
| Show RelayAccessPoint | |
Defined in Ouroboros.Network.PeerSelection.RelayAccessPoint Methods showsPrec :: Int -> RelayAccessPoint -> ShowS # show :: RelayAccessPoint -> String # showList :: [RelayAccessPoint] -> ShowS # | |
| Eq RelayAccessPoint | |
Defined in Ouroboros.Network.PeerSelection.RelayAccessPoint Methods (==) :: RelayAccessPoint -> RelayAccessPoint -> Bool # (/=) :: RelayAccessPoint -> RelayAccessPoint -> Bool # | |
| Ord RelayAccessPoint | |
Defined in Ouroboros.Network.PeerSelection.RelayAccessPoint Methods compare :: RelayAccessPoint -> RelayAccessPoint -> Ordering # (<) :: RelayAccessPoint -> RelayAccessPoint -> Bool # (<=) :: RelayAccessPoint -> RelayAccessPoint -> Bool # (>) :: RelayAccessPoint -> RelayAccessPoint -> Bool # (>=) :: RelayAccessPoint -> RelayAccessPoint -> Bool # max :: RelayAccessPoint -> RelayAccessPoint -> RelayAccessPoint # min :: RelayAccessPoint -> RelayAccessPoint -> RelayAccessPoint # | |
Instances
| Generic AfterSlot | |||||
Defined in Ouroboros.Network.PeerSelection.LedgerPeers.Type Associated Types
| |||||
| Show AfterSlot | |||||
| Eq AfterSlot | |||||
| NoThunks AfterSlot | |||||
| type Rep AfterSlot | |||||
Defined in Ouroboros.Network.PeerSelection.LedgerPeers.Type type Rep AfterSlot = D1 ('MetaData "AfterSlot" "Ouroboros.Network.PeerSelection.LedgerPeers.Type" "ouroboros-network-0.23.0.0-inplace-api" 'False) (C1 ('MetaCons "Always" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "After" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SlotNo))) | |||||
data IsBigLedgerPeer #
Constructors
| IsBigLedgerPeer | |
| IsNotBigLedgerPeer |
Instances
| Show IsBigLedgerPeer | |
Defined in Ouroboros.Network.PeerSelection.LedgerPeers.Type Methods showsPrec :: Int -> IsBigLedgerPeer -> ShowS # show :: IsBigLedgerPeer -> String # showList :: [IsBigLedgerPeer] -> ShowS # | |
| Eq IsBigLedgerPeer | |
Defined in Ouroboros.Network.PeerSelection.LedgerPeers.Type Methods (==) :: IsBigLedgerPeer -> IsBigLedgerPeer -> Bool # (/=) :: IsBigLedgerPeer -> IsBigLedgerPeer -> Bool # | |
data LedgerPeerSnapshot #
Constructors
| LedgerPeerSnapshotV2 (WithOrigin SlotNo, [(AccPoolStake, (PoolStake, NonEmpty LedgerRelayAccessPoint))]) |
Bundled Patterns
| pattern LedgerPeerSnapshot :: (WithOrigin SlotNo, [(AccPoolStake, (PoolStake, NonEmpty LedgerRelayAccessPoint))]) -> LedgerPeerSnapshot |
Instances
| FromJSON LedgerPeerSnapshot | |
Defined in Ouroboros.Network.PeerSelection.LedgerPeers.Type Methods parseJSON :: Value -> Parser LedgerPeerSnapshot # parseJSONList :: Value -> Parser [LedgerPeerSnapshot] # | |
| ToJSON LedgerPeerSnapshot | |
Defined in Ouroboros.Network.PeerSelection.LedgerPeers.Type Methods toJSON :: LedgerPeerSnapshot -> Value # toEncoding :: LedgerPeerSnapshot -> Encoding # toJSONList :: [LedgerPeerSnapshot] -> Value # toEncodingList :: [LedgerPeerSnapshot] -> Encoding # omitField :: LedgerPeerSnapshot -> Bool # | |
| Show LedgerPeerSnapshot | |
Defined in Ouroboros.Network.PeerSelection.LedgerPeers.Type Methods showsPrec :: Int -> LedgerPeerSnapshot -> ShowS # show :: LedgerPeerSnapshot -> String # showList :: [LedgerPeerSnapshot] -> ShowS # | |
| Eq LedgerPeerSnapshot | |
Defined in Ouroboros.Network.PeerSelection.LedgerPeers.Type Methods (==) :: LedgerPeerSnapshot -> LedgerPeerSnapshot -> Bool # (/=) :: LedgerPeerSnapshot -> LedgerPeerSnapshot -> Bool # | |
lpExtraAPI :: LedgerPeersConsensusInterface extraAPI m -> extraAPI #
lpGetLatestSlot :: LedgerPeersConsensusInterface extraAPI m -> STM m (WithOrigin SlotNo) #
lpGetLedgerPeers :: LedgerPeersConsensusInterface extraAPI m -> STM m [(PoolStake, NonEmpty LedgerRelayAccessPoint)] #
Constructors
| PoolStake | |
Fields | |
Instances
| NFData PoolStake | |
| Num PoolStake | |
| Fractional PoolStake | |
| Show PoolStake | |
| Eq PoolStake | |
| Ord PoolStake | |
data UseLedgerPeers #
Constructors
| DontUseLedgerPeers | |
| UseLedgerPeers AfterSlot |
Instances
| Generic UseLedgerPeers | |||||
Defined in Ouroboros.Network.PeerSelection.LedgerPeers.Type Associated Types
Methods from :: UseLedgerPeers -> Rep UseLedgerPeers x # to :: Rep UseLedgerPeers x -> UseLedgerPeers # | |||||
| Show UseLedgerPeers | |||||
Defined in Ouroboros.Network.PeerSelection.LedgerPeers.Type Methods showsPrec :: Int -> UseLedgerPeers -> ShowS # show :: UseLedgerPeers -> String # showList :: [UseLedgerPeers] -> ShowS # | |||||
| Eq UseLedgerPeers | |||||
Defined in Ouroboros.Network.PeerSelection.LedgerPeers.Type Methods (==) :: UseLedgerPeers -> UseLedgerPeers -> Bool # (/=) :: UseLedgerPeers -> UseLedgerPeers -> Bool # | |||||
| NoThunks UseLedgerPeers | |||||
Defined in Ouroboros.Network.PeerSelection.LedgerPeers.Type Methods noThunks :: Context -> UseLedgerPeers -> IO (Maybe ThunkInfo) # wNoThunks :: Context -> UseLedgerPeers -> IO (Maybe ThunkInfo) # showTypeOf :: Proxy UseLedgerPeers -> String # | |||||
| type Rep UseLedgerPeers | |||||
Defined in Ouroboros.Network.PeerSelection.LedgerPeers.Type type Rep UseLedgerPeers = D1 ('MetaData "UseLedgerPeers" "Ouroboros.Network.PeerSelection.LedgerPeers.Type" "ouroboros-network-0.23.0.0-inplace-api" 'False) (C1 ('MetaCons "DontUseLedgerPeers" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "UseLedgerPeers" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 AfterSlot))) | |||||
data LedgerRelayAccessPoint #
Constructors
| LedgerRelayAccessDomain !Domain !PortNumber | |
| LedgerRelayAccessSRVDomain !Domain | |
| LedgerRelayAccessAddress !IP !PortNumber |
Instances
| FromJSON LedgerRelayAccessPoint | |
Defined in Ouroboros.Network.PeerSelection.RelayAccessPoint Methods parseJSON :: Value -> Parser LedgerRelayAccessPoint # parseJSONList :: Value -> Parser [LedgerRelayAccessPoint] # | |
| ToJSON LedgerRelayAccessPoint | |
Defined in Ouroboros.Network.PeerSelection.RelayAccessPoint Methods toJSON :: LedgerRelayAccessPoint -> Value # toEncoding :: LedgerRelayAccessPoint -> Encoding # toJSONList :: [LedgerRelayAccessPoint] -> Value # toEncodingList :: [LedgerRelayAccessPoint] -> Encoding # omitField :: LedgerRelayAccessPoint -> Bool # | |
| FromCBOR LedgerRelayAccessPoint | |
Defined in Ouroboros.Network.PeerSelection.RelayAccessPoint Methods fromCBOR :: Decoder s LedgerRelayAccessPoint # label :: Proxy LedgerRelayAccessPoint -> Text # | |
| ToCBOR LedgerRelayAccessPoint | |
Defined in Ouroboros.Network.PeerSelection.RelayAccessPoint Methods toCBOR :: LedgerRelayAccessPoint -> Encoding # encodedSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy LedgerRelayAccessPoint -> Size # encodedListSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy [LedgerRelayAccessPoint] -> Size # | |
| NFData LedgerRelayAccessPoint | |
Defined in Ouroboros.Network.PeerSelection.RelayAccessPoint Methods rnf :: LedgerRelayAccessPoint -> () # | |
| Show LedgerRelayAccessPoint | |
Defined in Ouroboros.Network.PeerSelection.RelayAccessPoint Methods showsPrec :: Int -> LedgerRelayAccessPoint -> ShowS # show :: LedgerRelayAccessPoint -> String # showList :: [LedgerRelayAccessPoint] -> ShowS # | |
| Eq LedgerRelayAccessPoint | |
Defined in Ouroboros.Network.PeerSelection.RelayAccessPoint Methods (==) :: LedgerRelayAccessPoint -> LedgerRelayAccessPoint -> Bool # (/=) :: LedgerRelayAccessPoint -> LedgerRelayAccessPoint -> Bool # | |
| Ord LedgerRelayAccessPoint | |
Defined in Ouroboros.Network.PeerSelection.RelayAccessPoint Methods compare :: LedgerRelayAccessPoint -> LedgerRelayAccessPoint -> Ordering # (<) :: LedgerRelayAccessPoint -> LedgerRelayAccessPoint -> Bool # (<=) :: LedgerRelayAccessPoint -> LedgerRelayAccessPoint -> Bool # (>) :: LedgerRelayAccessPoint -> LedgerRelayAccessPoint -> Bool # (>=) :: LedgerRelayAccessPoint -> LedgerRelayAccessPoint -> Bool # max :: LedgerRelayAccessPoint -> LedgerRelayAccessPoint -> LedgerRelayAccessPoint # min :: LedgerRelayAccessPoint -> LedgerRelayAccessPoint -> LedgerRelayAccessPoint # | |
newDNSLocalRootSemaphore :: forall (m :: Type -> Type). MonadSTM m => STM m (DNSSemaphore m) #
Create a DNSSemaphore for local root peers.
newLedgerAndPublicRootDNSSemaphore :: MonadSTM m => m (DNSSemaphore m) #
Create a DNSSemaphore for root and ledger peers.
withDNSSemaphore :: (MonadSTM m, MonadThrow m) => DNSSemaphore m -> m a -> m a #
Run a computation by attempting to acquire the semaphore first. On termination or failure free the semaphore
data DNSSemaphore (m :: Type -> Type) #
A semaphore used to limit concurrency of dns names resolution.
resolveLedgerPeers :: forall m peerAddr resolver. (Ord peerAddr, MonadThrow m, MonadAsync m) => DNSSemaphore m -> ResolvConf -> DNSActions peerAddr resolver m -> LedgerPeersKind -> [RelayAccessPoint] -> StdGen -> m (Map Domain (Set peerAddr)) #
Provides DNS resolution functionality.
Concurrently resolve DNS names, respecting the maxDNSConcurrency limit.
publicRootPeersProvider :: forall peerAddr resolver a m. (MonadThrow m, MonadAsync m, Ord peerAddr) => Tracer m TracePublicRootPeers -> (IP -> PortNumber -> peerAddr) -> DNSSemaphore m -> ResolvConf -> STM m (Map RelayAccessPoint PeerAdvertise) -> DNSActions peerAddr resolver m -> StdGen -> ((Int -> m (Map peerAddr PeerAdvertise, DiffTime)) -> m a) -> m a #
fulfills a request from requestPublicRootPeers
data TracePublicRootPeers #
Constructors
| TracePublicRootRelayAccessPoint (Map RelayAccessPoint PeerAdvertise) | |
| TracePublicRootDomains [RelayAccessPoint] |
Instances
| Show TracePublicRootPeers | |
Defined in Ouroboros.Network.PeerSelection.RootPeersDNS.PublicRootPeers Methods showsPrec :: Int -> TracePublicRootPeers -> ShowS # show :: TracePublicRootPeers -> String # showList :: [TracePublicRootPeers] -> ShowS # | |
data PeerAdvertise #
Constructors
| DoNotAdvertisePeer | |
| DoAdvertisePeer |
Instances
| FromJSON PeerAdvertise | |||||
Defined in Ouroboros.Network.PeerSelection.PeerAdvertise Methods parseJSON :: Value -> Parser PeerAdvertise # parseJSONList :: Value -> Parser [PeerAdvertise] # | |||||
| ToJSON PeerAdvertise | |||||
Defined in Ouroboros.Network.PeerSelection.PeerAdvertise Methods toJSON :: PeerAdvertise -> Value # toEncoding :: PeerAdvertise -> Encoding # toJSONList :: [PeerAdvertise] -> Value # toEncodingList :: [PeerAdvertise] -> Encoding # omitField :: PeerAdvertise -> Bool # | |||||
| Generic PeerAdvertise | |||||
Defined in Ouroboros.Network.PeerSelection.PeerAdvertise Associated Types
| |||||
| Show PeerAdvertise | |||||
Defined in Ouroboros.Network.PeerSelection.PeerAdvertise Methods showsPrec :: Int -> PeerAdvertise -> ShowS # show :: PeerAdvertise -> String # showList :: [PeerAdvertise] -> ShowS # | |||||
| Eq PeerAdvertise | |||||
Defined in Ouroboros.Network.PeerSelection.PeerAdvertise Methods (==) :: PeerAdvertise -> PeerAdvertise -> Bool # (/=) :: PeerAdvertise -> PeerAdvertise -> Bool # | |||||
| Ord PeerAdvertise | |||||
Defined in Ouroboros.Network.PeerSelection.PeerAdvertise Methods compare :: PeerAdvertise -> PeerAdvertise -> Ordering # (<) :: PeerAdvertise -> PeerAdvertise -> Bool # (<=) :: PeerAdvertise -> PeerAdvertise -> Bool # (>) :: PeerAdvertise -> PeerAdvertise -> Bool # (>=) :: PeerAdvertise -> PeerAdvertise -> Bool # max :: PeerAdvertise -> PeerAdvertise -> PeerAdvertise # min :: PeerAdvertise -> PeerAdvertise -> PeerAdvertise # | |||||
| type Rep PeerAdvertise | |||||
Defined in Ouroboros.Network.PeerSelection.PeerAdvertise type Rep PeerAdvertise = D1 ('MetaData "PeerAdvertise" "Ouroboros.Network.PeerSelection.PeerAdvertise" "ouroboros-network-0.23.0.0-inplace-api" 'False) (C1 ('MetaCons "DoNotAdvertisePeer" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DoAdvertisePeer" 'PrefixI 'False) (U1 :: Type -> Type)) | |||||
data KnownPeerInfo #
Constructors
| KnownPeerInfo | |
Fields
| |
Instances
| Show KnownPeerInfo | |
Defined in Ouroboros.Network.PeerSelection.State.KnownPeers Methods showsPrec :: Int -> KnownPeerInfo -> ShowS # show :: KnownPeerInfo -> String # showList :: [KnownPeerInfo] -> ShowS # | |
| Eq KnownPeerInfo | |
Defined in Ouroboros.Network.PeerSelection.State.KnownPeers Methods (==) :: KnownPeerInfo -> KnownPeerInfo -> Bool # (/=) :: KnownPeerInfo -> KnownPeerInfo -> Bool # | |
data PeerSharing #
Constructors
| PeerSharingDisabled | |
| PeerSharingEnabled |
Instances
| Monoid PeerSharing | |||||
Defined in Ouroboros.Network.PeerSelection.PeerSharing Methods mempty :: PeerSharing # mappend :: PeerSharing -> PeerSharing -> PeerSharing # mconcat :: [PeerSharing] -> PeerSharing # | |||||
| Semigroup PeerSharing | |||||
Defined in Ouroboros.Network.PeerSelection.PeerSharing Methods (<>) :: PeerSharing -> PeerSharing -> PeerSharing # sconcat :: NonEmpty PeerSharing -> PeerSharing # stimes :: Integral b => b -> PeerSharing -> PeerSharing # | |||||
| Generic PeerSharing | |||||
Defined in Ouroboros.Network.PeerSelection.PeerSharing Associated Types
| |||||
| Read PeerSharing | |||||
Defined in Ouroboros.Network.PeerSelection.PeerSharing Methods readsPrec :: Int -> ReadS PeerSharing # readList :: ReadS [PeerSharing] # readPrec :: ReadPrec PeerSharing # readListPrec :: ReadPrec [PeerSharing] # | |||||
| Show PeerSharing | |||||
Defined in Ouroboros.Network.PeerSelection.PeerSharing Methods showsPrec :: Int -> PeerSharing -> ShowS # show :: PeerSharing -> String # showList :: [PeerSharing] -> ShowS # | |||||
| Eq PeerSharing | |||||
Defined in Ouroboros.Network.PeerSelection.PeerSharing | |||||
| type Rep PeerSharing | |||||
Defined in Ouroboros.Network.PeerSelection.PeerSharing | |||||
newtype HotValency #
Newtype wrapper representing hot valency value from local root group configuration
Constructors
| HotValency | |
Fields
| |
Instances
| Num HotValency | |
Defined in Ouroboros.Network.PeerSelection.State.LocalRootPeers Methods (+) :: HotValency -> HotValency -> HotValency # (-) :: HotValency -> HotValency -> HotValency # (*) :: HotValency -> HotValency -> HotValency # negate :: HotValency -> HotValency # abs :: HotValency -> HotValency # signum :: HotValency -> HotValency # fromInteger :: Integer -> HotValency # | |
| Show HotValency | |
Defined in Ouroboros.Network.PeerSelection.State.LocalRootPeers Methods showsPrec :: Int -> HotValency -> ShowS # show :: HotValency -> String # showList :: [HotValency] -> ShowS # | |
| Eq HotValency | |
| Ord HotValency | |
Defined in Ouroboros.Network.PeerSelection.State.LocalRootPeers Methods compare :: HotValency -> HotValency -> Ordering # (<) :: HotValency -> HotValency -> Bool # (<=) :: HotValency -> HotValency -> Bool # (>) :: HotValency -> HotValency -> Bool # (>=) :: HotValency -> HotValency -> Bool # max :: HotValency -> HotValency -> HotValency # min :: HotValency -> HotValency -> HotValency # | |
data LocalRootConfig extraFlags #
Constructors
| LocalRootConfig | |
Fields
| |
Instances
| Show extraFlags => Show (LocalRootConfig extraFlags) | |
Defined in Ouroboros.Network.PeerSelection.State.LocalRootPeers Methods showsPrec :: Int -> LocalRootConfig extraFlags -> ShowS # show :: LocalRootConfig extraFlags -> String # showList :: [LocalRootConfig extraFlags] -> ShowS # | |
| Eq extraFlags => Eq (LocalRootConfig extraFlags) | |
Defined in Ouroboros.Network.PeerSelection.State.LocalRootPeers Methods (==) :: LocalRootConfig extraFlags -> LocalRootConfig extraFlags -> Bool # (/=) :: LocalRootConfig extraFlags -> LocalRootConfig extraFlags -> Bool # | |
data LocalRootPeers extraFlags peeraddr #
Instances
| (Show extraFlags, Show peeraddr, Ord peeraddr) => Show (LocalRootPeers extraFlags peeraddr) | |
Defined in Ouroboros.Network.PeerSelection.State.LocalRootPeers Methods showsPrec :: Int -> LocalRootPeers extraFlags peeraddr -> ShowS # show :: LocalRootPeers extraFlags peeraddr -> String # showList :: [LocalRootPeers extraFlags peeraddr] -> ShowS # | |
| (Eq peeraddr, Eq extraFlags) => Eq (LocalRootPeers extraFlags peeraddr) | |
Defined in Ouroboros.Network.PeerSelection.State.LocalRootPeers Methods (==) :: LocalRootPeers extraFlags peeraddr -> LocalRootPeers extraFlags peeraddr -> Bool # (/=) :: LocalRootPeers extraFlags peeraddr -> LocalRootPeers extraFlags peeraddr -> Bool # | |
newtype WarmValency #
Newtype wrapper representing warm valency value from local root group configuration
Constructors
| WarmValency | |
Fields | |
Instances
| Num WarmValency | |
Defined in Ouroboros.Network.PeerSelection.State.LocalRootPeers Methods (+) :: WarmValency -> WarmValency -> WarmValency # (-) :: WarmValency -> WarmValency -> WarmValency # (*) :: WarmValency -> WarmValency -> WarmValency # negate :: WarmValency -> WarmValency # abs :: WarmValency -> WarmValency # signum :: WarmValency -> WarmValency # fromInteger :: Integer -> WarmValency # | |
| Show WarmValency | |
Defined in Ouroboros.Network.PeerSelection.State.LocalRootPeers Methods showsPrec :: Int -> WarmValency -> ShowS # show :: WarmValency -> String # showList :: [WarmValency] -> ShowS # | |
| Eq WarmValency | |
| Ord WarmValency | |
Defined in Ouroboros.Network.PeerSelection.State.LocalRootPeers Methods compare :: WarmValency -> WarmValency -> Ordering # (<) :: WarmValency -> WarmValency -> Bool # (<=) :: WarmValency -> WarmValency -> Bool # (>) :: WarmValency -> WarmValency -> Bool # (>=) :: WarmValency -> WarmValency -> Bool # max :: WarmValency -> WarmValency -> WarmValency # min :: WarmValency -> WarmValency -> WarmValency # | |
Arguments
| :: forall m extraFlags peerAddr resolver. (Alternative (STM m), MonadAsync m, MonadDelay m, MonadThrow m, Ord peerAddr, Eq extraFlags) | |
| => Tracer m (TraceLocalRootPeers extraFlags peerAddr) | |
| -> PeerActionsDNS peerAddr resolver m | |
| -> ResolvConf | |
| -> StdGen | |
| -> STM m [(HotValency, WarmValency, Map RelayAccessPoint (LocalRootConfig extraFlags))] | input |
| -> StrictTVar m [(HotValency, WarmValency, Map peerAddr (LocalRootConfig extraFlags))] | output |
| -> m Void |
Resolve RelayAddress-es of local root peers using dns if needed. Local
roots are provided wrapped in a StrictTVar, which value might change
(re-read form a config file). The resolved dns names are available through
the output StrictTVar.
data TraceLocalRootPeers extraFlags peerAddr #
Constructors
| TraceLocalRootDomains (Config extraFlags RelayAccessPoint) |
|
| TraceLocalRootWaiting RelayAccessPoint DiffTime | |
| TraceLocalRootGroups (Config extraFlags peerAddr) | This traces the results of the local root peer provider |
| TraceLocalRootDNSMap (Map RelayAccessPoint [peerAddr]) | This traces the results of the domain name resolution |
| TraceLocalRootReconfigured | |
Fields
| |
| TraceLocalRootFailure RelayAccessPoint DNSorIOError | |
| TraceLocalRootError Domain SomeException | |
Instances
| (Show extraFlags, Show peerAddr) => Show (TraceLocalRootPeers extraFlags peerAddr) | |
Defined in Ouroboros.Network.PeerSelection.RootPeersDNS.LocalRootPeers Methods showsPrec :: Int -> TraceLocalRootPeers extraFlags peerAddr -> ShowS # show :: TraceLocalRootPeers extraFlags peerAddr -> String # showList :: [TraceLocalRootPeers extraFlags peerAddr] -> ShowS # | |
withLedgerPeers :: forall peerAddr resolver extraAPI m a. (MonadAsync m, MonadThrow m, MonadMonotonicTime m, Ord peerAddr) => PeerActionsDNS peerAddr resolver m -> WithLedgerPeersArgs extraAPI m -> ((NumberOfPeers -> LedgerPeersKind -> m (Maybe (Set peerAddr, DiffTime))) -> Async m Void -> m a) -> m a #
For a LedgerPeers worker thread and submit request and receive responses.
data LedgerPeers #
Ledger Peer request result
Constructors
| LedgerPeers [(PoolStake, NonEmpty RelayAccessPoint)] | Ledger peers |
| BeforeSlot | No result because the node is still before the configured UseLedgerAfter slot number |
Instances
| Show LedgerPeers | |
Defined in Ouroboros.Network.PeerSelection.LedgerPeers Methods showsPrec :: Int -> LedgerPeers -> ShowS # show :: LedgerPeers -> String # showList :: [LedgerPeers] -> ShowS # | |
| Eq LedgerPeers | |
Defined in Ouroboros.Network.PeerSelection.LedgerPeers | |
newtype NumberOfPeers #
Number of peers to pick.
Constructors
| NumberOfPeers | |
Fields | |
Instances
| Show NumberOfPeers | |
Defined in Ouroboros.Network.PeerSelection.LedgerPeers Methods showsPrec :: Int -> NumberOfPeers -> ShowS # show :: NumberOfPeers -> String # showList :: [NumberOfPeers] -> ShowS # | |
data TraceLedgerPeers #
Trace LedgerPeers events.
Constructors
| PickedBigLedgerPeer RelayAccessPoint AccPoolStake PoolStake | Trace for a significant ledger peer picked with accumulated and relative stake of its pool. |
| PickedLedgerPeer RelayAccessPoint AccPoolStake PoolStake | Trace for a ledger peer picked with accumulated and relative stake of its pool. |
| PickedBigLedgerPeers NumberOfPeers [RelayAccessPoint] | |
| PickedLedgerPeers NumberOfPeers [RelayAccessPoint] | Trace for the number of peers and we wanted to pick and the list of peers picked. |
| FetchingNewLedgerState Int Int | Trace for fetching a new list of peers from the ledger. The first Int is the number of ledger peers returned the latter is the number of big ledger peers. |
| TraceLedgerPeersDomains [RelayAccessPoint] | |
| DisabledLedgerPeers | Trace for when getting peers from the ledger is disabled, that is DontUseLedgerPeers. |
| TraceUseLedgerPeers UseLedgerPeers | Trace UseLedgerPeers value |
| WaitingOnRequest | |
| RequestForPeers NumberOfPeers | |
| ReusingLedgerState Int DiffTime | |
| FallingBackToPublicRootPeers | |
| NotEnoughBigLedgerPeers NumberOfPeers Int | |
| NotEnoughLedgerPeers NumberOfPeers Int | |
| UsingBigLedgerPeerSnapshot |
Instances
| Show TraceLedgerPeers | |
Defined in Ouroboros.Network.PeerSelection.LedgerPeers Methods showsPrec :: Int -> TraceLedgerPeers -> ShowS # show :: TraceLedgerPeers -> String # showList :: [TraceLedgerPeers] -> ShowS # | |
data WithLedgerPeersArgs extraAPI (m :: Type -> Type) #
Argument record for withLedgerPeers
Constructors
| WithLedgerPeersArgs | |
Fields
| |
nullPublicExtraPeersAPI :: Monoid extraPeers => PublicExtraPeersAPI extraPeers peeraddr #
data PeerSource #
Where did this peer come from? Policy functions can choose to treat peers differently depending on where we found them from.
Instances
| Enum PeerSource | |
Defined in Ouroboros.Network.PeerSelection.Types Methods succ :: PeerSource -> PeerSource # pred :: PeerSource -> PeerSource # toEnum :: Int -> PeerSource # fromEnum :: PeerSource -> Int # enumFrom :: PeerSource -> [PeerSource] # enumFromThen :: PeerSource -> PeerSource -> [PeerSource] # enumFromTo :: PeerSource -> PeerSource -> [PeerSource] # enumFromThenTo :: PeerSource -> PeerSource -> PeerSource -> [PeerSource] # | |
| Show PeerSource | |
Defined in Ouroboros.Network.PeerSelection.Types Methods showsPrec :: Int -> PeerSource -> ShowS # show :: PeerSource -> String # showList :: [PeerSource] -> ShowS # | |
| Eq PeerSource | |
Defined in Ouroboros.Network.PeerSelection.Types | |
| Ord PeerSource | |
Defined in Ouroboros.Network.PeerSelection.Types Methods compare :: PeerSource -> PeerSource -> Ordering # (<) :: PeerSource -> PeerSource -> Bool # (<=) :: PeerSource -> PeerSource -> Bool # (>) :: PeerSource -> PeerSource -> Bool # (>=) :: PeerSource -> PeerSource -> Bool # max :: PeerSource -> PeerSource -> PeerSource # min :: PeerSource -> PeerSource -> PeerSource # | |
data PeerStatus #
Constructors
| PeerCold | Peer is in true cold which means no connection to exists and the outbound governor is safe to promote it. |
| PeerCooling | Peer is in cold state but its connection still lingers. I.e. it is still in progress to be fully demoted. Note:
The `PeerCooling -> PeerCold` state transition is an `outbound-governor`
reflection of the connection-manager's `TerminatingSt -> TerminatedSt`
state transition (our version of tcp's |
| PeerWarm | |
| PeerHot |
Instances
| Show PeerStatus | |
Defined in Ouroboros.Network.PeerSelection.Types Methods showsPrec :: Int -> PeerStatus -> ShowS # show :: PeerStatus -> String # showList :: [PeerStatus] -> ShowS # | |
| Eq PeerStatus | |
Defined in Ouroboros.Network.PeerSelection.Types | |
| Ord PeerStatus | |
Defined in Ouroboros.Network.PeerSelection.Types Methods compare :: PeerStatus -> PeerStatus -> Ordering # (<) :: PeerStatus -> PeerStatus -> Bool # (<=) :: PeerStatus -> PeerStatus -> Bool # (>) :: PeerStatus -> PeerStatus -> Bool # (>=) :: PeerStatus -> PeerStatus -> Bool # max :: PeerStatus -> PeerStatus -> PeerStatus # min :: PeerStatus -> PeerStatus -> PeerStatus # | |
data PublicExtraPeersAPI extraPeers peeraddr #
Constructors
| PublicExtraPeersAPI | |
Fields
| |
Arguments
| :: Ord peeraddr | |
| => (extraPeers -> Set peeraddr) | This function comes from |
| -> (extraPeers -> Bool) | This function comes from |
| -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn | |
| -> a | |
| -> a |
emptyPeerSelectionCounters :: extraCounters -> PeerSelectionCounters extraCounters #
emptyPeerSelectionState :: StdGen -> extraState -> extraPeers -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn #
establishedPeersStatus :: Ord peeraddr => PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> Map peeraddr PeerStatus #
A view of the status of each established peer, for testing and debugging.
makePublicPeerSelectionStateVar :: (MonadSTM m, Ord peeraddr) => m (StrictTVar m (PublicPeerSelectionState peeraddr)) #
peerSelectionStateToCounters #
Arguments
| :: Ord peeraddr | |
| => (extraPeers -> Set peeraddr) | This function comes from |
| -> (PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> extraCounters) | |
| -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn | |
| -> PeerSelectionCounters extraCounters |
peerSelectionStateToView :: Ord peeraddr => (extraPeers -> Set peeraddr) -> (PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> extraViews) -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> PeerSelectionSetsWithSizes extraViews peeraddr #
Compute peer selection sets & their sizes.
This function is used internally by the outbound-governor and to compute
PeerSelectionCounters which are used by churn or are traced (e.g. as EKG
metrics). For this reason one has to be very careful when changing the
function, as it will affect the outbound governor behaviour.
data AssociationMode #
A node is classified as LocalRootsOnly if it is a hidden relay or
a BP, e.g. if it is configured such that it can only have a chance to be
connected to local roots. This is true if the node is configured in one of
two ways:
DontUseBootstrapPeers,DontUseLedgerPeersandPeerSharingDisabled; orUseBootstrapPeers,DontUseLedgerPeersandPeerSharingDisabled, but it's not using any bootstrap peers (i.e. it is synced).
Note that in the second case a node might transition between LocalRootsOnly
and Unrestricted modes, depending on LedgerStateJudgement.
See readAssociationMode.
Constructors
| LocalRootsOnly | |
| Unrestricted |
Instances
| Show AssociationMode | |
Defined in Ouroboros.Network.PeerSelection.Governor.Types Methods showsPrec :: Int -> AssociationMode -> ShowS # show :: AssociationMode -> String # showList :: [AssociationMode] -> ShowS # | |
data ChurnAction #
Constructors
| DecreasedActivePeers | |
| IncreasedActivePeers | |
| DecreasedActiveBigLedgerPeers | |
| IncreasedActiveBigLedgerPeers | |
| DecreasedEstablishedPeers | |
| IncreasedEstablishedPeers | |
| IncreasedEstablishedBigLedgerPeers | |
| DecreasedEstablishedBigLedgerPeers | |
| DecreasedKnownPeers | |
| IncreasedKnownPeers | |
| DecreasedKnownBigLedgerPeers | |
| IncreasedKnownBigLedgerPeers |
Instances
| Show ChurnAction | |
Defined in Ouroboros.Network.PeerSelection.Governor.Types Methods showsPrec :: Int -> ChurnAction -> ShowS # show :: ChurnAction -> String # showList :: [ChurnAction] -> ShowS # | |
| Eq ChurnAction | |
data DebugPeerSelection extraState extraFlags extraPeers peeraddr where #
Constructors
| TraceGovernorState :: forall extraState extraFlags extraPeers peeraddr peerconn. Show peerconn => Time -> Maybe DiffTime -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> DebugPeerSelection extraState extraFlags extraPeers peeraddr |
Instances
| (Show extraState, Show extraFlags, Show extraPeers, Ord peeraddr, Show peeraddr) => Show (DebugPeerSelection extraState extraFlags extraPeers peeraddr) | |
Defined in Ouroboros.Network.PeerSelection.Governor.Types Methods showsPrec :: Int -> DebugPeerSelection extraState extraFlags extraPeers peeraddr -> ShowS # show :: DebugPeerSelection extraState extraFlags extraPeers peeraddr -> String # showList :: [DebugPeerSelection extraState extraFlags extraPeers peeraddr] -> ShowS # | |
data PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn (m :: Type -> Type) #
Constructors
| PeerSelectionActions | |
Fields
| |
type PeerSelectionCounters extraCounters = PeerSelectionView extraCounters Int #
data PeerSelectionView extraViews a #
Peer selection view.
This is a functor which is used to hold computation of various peer sets and
their sizes. See peerSelectionStateToView, peerSelectionStateToCounters.
Constructors
| PeerSelectionView | |
Fields
| |
Bundled Patterns
| pattern PeerSelectionCounters :: Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> extraCounters -> PeerSelectionCounters extraCounters | |
| pattern PeerSelectionCountersHWC :: Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> PeerSelectionCounters extraCounters | A Pattern synonym which computes |
Instances
| Functor (PeerSelectionView extraViews) | |
Defined in Ouroboros.Network.PeerSelection.Governor.Types Methods fmap :: (a -> b) -> PeerSelectionView extraViews a -> PeerSelectionView extraViews b # (<$) :: a -> PeerSelectionView extraViews b -> PeerSelectionView extraViews a # | |
| (Show a, Show extraViews) => Show (PeerSelectionView extraViews a) | |
Defined in Ouroboros.Network.PeerSelection.Governor.Types Methods showsPrec :: Int -> PeerSelectionView extraViews a -> ShowS # show :: PeerSelectionView extraViews a -> String # showList :: [PeerSelectionView extraViews a] -> ShowS # | |
| (Eq a, Eq extraViews) => Eq (PeerSelectionView extraViews a) | |
Defined in Ouroboros.Network.PeerSelection.Governor.Types Methods (==) :: PeerSelectionView extraViews a -> PeerSelectionView extraViews a -> Bool # (/=) :: PeerSelectionView extraViews a -> PeerSelectionView extraViews a -> Bool # | |
data PeerSelectionGovernorArgs extraState extraDebugState extraFlags extraPeers extraAPI extraCounters extraTrace peeraddr peerconn exception (m :: Type -> Type) #
Constructors
| PeerSelectionGovernorArgs | |
Fields
| |
data PeerSelectionInterfaces extraState extraFlags extraPeers extraCounters peeraddr peerconn (m :: Type -> Type) #
Interfaces required by the peer selection governor, which do not need to
be shared with actions and thus are not part of PeerSelectionActions.
Constructors
| PeerSelectionInterfaces | |
Fields
| |
data PeerSelectionPolicy peeraddr (m :: Type -> Type) #
Constructors
| PeerSelectionPolicy | |
Fields
| |
type PeerSelectionSetsWithSizes extraViews peeraddr = PeerSelectionView extraViews (Set peeraddr, Int) #
data PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn #
The internal state used by the peerSelectionGovernor.
The local and public root sets are disjoint, and their union is the overall root set.
Documentation of individual fields describes some of the invariants these
structures should maintain. For the entire picture, see
assertPeerSelectionState.
Instances
| (Ord peeraddr, Show extraFlags, Show peeraddr, Show extraPeers, Show peerconn, Show extraState) => Show (PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn) | |
Defined in Ouroboros.Network.PeerSelection.Governor.Types Methods showsPrec :: Int -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> ShowS # show :: PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> String # showList :: [PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn] -> ShowS # | |
data PeerSelectionTargets #
Adjustable targets for the peer selection mechanism.
These are used by the peer selection governor as targets. They are used by the peer churn governor loop as knobs to adjust, to influence the peer selection governor.
The known, established and active peer targets are targets both from below and from above: the governor will attempt to grow or shrink the sets to hit these targets.
Unlike the other targets, the root peer target is "one sided", it is only a target from below. The governor does not try to shrink the root set to hit it, it simply stops looking for more.
There is also an implicit target that enough local root peers are selected as active. This comes from the configuration for local roots, and is not an independently adjustable target.
Constructors
| PeerSelectionTargets | |
Fields
| |
Instances
| Show PeerSelectionTargets | |
Defined in Ouroboros.Network.PeerSelection.Governor.Types Methods showsPrec :: Int -> PeerSelectionTargets -> ShowS # show :: PeerSelectionTargets -> String # showList :: [PeerSelectionTargets] -> ShowS # | |
| Eq PeerSelectionTargets | |
Defined in Ouroboros.Network.PeerSelection.Governor.Types Methods (==) :: PeerSelectionTargets -> PeerSelectionTargets -> Bool # (/=) :: PeerSelectionTargets -> PeerSelectionTargets -> Bool # | |
data PeerStateActions peeraddr peerconn (m :: Type -> Type) #
Callbacks which are performed to change peer state.
Constructors
| PeerStateActions | |
Fields
| |
type PickPolicy peeraddr (m :: Type -> Type) = (peeraddr -> PeerSource) -> (peeraddr -> Int) -> (peeraddr -> Bool) -> Set peeraddr -> Int -> m (Set peeraddr) #
A peer pick policy is an action that picks a subset of elements from a map of peers.
The pre-condition is that the map of available choices will be non-empty, and the requested number to pick will be strictly positive.
The post-condition is that the picked set is non-empty but must not be bigger than the requested number.
Peer selection API is using `STM m` monad, internally it is using m.
newtype PublicPeerSelectionState peeraddr #
Public PeerSelectionState that can be accessed by Peer Sharing
mechanisms without any problem.
This data type should not expose too much information and keep only essential data needed for computing the peer sharing request result
Constructors
| PublicPeerSelectionState | |
Fields
| |
Instances
| Show peeraddr => Show (PublicPeerSelectionState peeraddr) | |
Defined in Ouroboros.Network.PeerSelection.Governor.Types Methods showsPrec :: Int -> PublicPeerSelectionState peeraddr -> ShowS # show :: PublicPeerSelectionState peeraddr -> String # showList :: [PublicPeerSelectionState peeraddr] -> ShowS # | |
data TracePeerSelection extraDebugState extraFlags extraPeers extraTrace peeraddr #
Constructors
| TraceLocalRootPeersChanged (LocalRootPeers extraFlags peeraddr) (LocalRootPeers extraFlags peeraddr) | |
| TraceTargetsChanged PeerSelectionTargets PeerSelectionTargets | Peer selection targets changed: old targets, new targets. |
| TracePublicRootsRequest Int Int | |
| TracePublicRootsResults (PublicRootPeers extraPeers peeraddr) Int DiffTime | |
| TracePublicRootsFailure SomeException Int DiffTime | |
| TraceForgetColdPeers Int Int (Set peeraddr) | target known peers, actual known peers, selected peers |
| TraceBigLedgerPeersRequest Int Int | |
| TraceBigLedgerPeersResults (Set peeraddr) Int DiffTime | |
| TraceBigLedgerPeersFailure SomeException Int DiffTime | |
| TraceForgetBigLedgerPeers Int Int (Set peeraddr) | target known big ledger peers, actual known big ledger peers, selected peers |
| TracePeerShareRequests Int Int PeerSharingAmount (Set peeraddr) (Set peeraddr) | target known peers, actual known peers, number of peers to request, peers available for peer sharing, peers selected for peer sharing |
| TracePeerShareResults [(peeraddr, Either SomeException (PeerSharingResult peeraddr))] | |
| TracePeerShareResultsFiltered [peeraddr] | |
| TracePickInboundPeers Int Int (Map peeraddr PeerSharing) (Set peeraddr) | target known peers, actual known peers, selected inbound peers, available peers |
| TracePromoteColdPeers Int Int (Set peeraddr) | target established, actual established, selected peers |
| TracePromoteColdLocalPeers [(WarmValency, Int)] (Set peeraddr) | target local established, actual local established, selected peers |
| TracePromoteColdFailed Int Int peeraddr DiffTime SomeException | |
| TracePromoteColdDone Int Int peeraddr | target established, actual established, peer |
| TracePromoteColdBigLedgerPeers Int Int (Set peeraddr) | target established big ledger peers, actual established big ledger peers, selected peers |
| TracePromoteColdBigLedgerPeerFailed Int Int peeraddr DiffTime SomeException | target established big ledger peers, actual established big ledger peers, peer, delay until next promotion, reason |
| TracePromoteColdBigLedgerPeerDone Int Int peeraddr | target established big ledger peers, actual established big ledger peers, peer |
| TracePromoteWarmPeers Int Int (Set peeraddr) | target active, actual active, selected peers |
| TracePromoteWarmLocalPeers | Promote local peers to warm |
Fields
| |
| TracePromoteWarmFailed Int Int peeraddr SomeException | |
| TracePromoteWarmDone Int Int peeraddr | target active, actual active, peer |
| TracePromoteWarmAborted Int Int peeraddr | aborted promotion of a warm peer; likely it was asynchronously demoted in the meantime. target active, actual active, peer |
| TracePromoteWarmBigLedgerPeers Int Int (Set peeraddr) | target active big ledger peers, actual active big ledger peers, selected peers |
| TracePromoteWarmBigLedgerPeerFailed Int Int peeraddr SomeException | target active big ledger peers, actual active big ledger peers, peer, reason |
| TracePromoteWarmBigLedgerPeerDone Int Int peeraddr | target active big ledger peers, actual active big ledger peers, peer |
| TracePromoteWarmBigLedgerPeerAborted Int Int peeraddr | aborted promotion of a warm big ledger peer; likely it was asynchronously demoted in the meantime. target active, actual active, peer |
| TraceDemoteWarmPeers Int Int (Set peeraddr) | target established, actual established, selected peers |
| TraceDemoteWarmFailed Int Int peeraddr SomeException | target established, actual established, peer, reason |
| TraceDemoteWarmDone Int Int peeraddr | target established, actual established, peer |
| TraceDemoteWarmBigLedgerPeers Int Int (Set peeraddr) | target established big ledger peers, actual established big ledger peers, selected peers |
| TraceDemoteWarmBigLedgerPeerFailed Int Int peeraddr SomeException | target established big ledger peers, actual established big ledger peers, peer, reason |
| TraceDemoteWarmBigLedgerPeerDone Int Int peeraddr | target established big ledger peers, actual established big ledger peers, peer |
| TraceDemoteHotPeers Int Int (Set peeraddr) | target active, actual active, selected peers |
| TraceDemoteLocalHotPeers [(HotValency, Int)] (Set peeraddr) | local per-group (target active, actual active), selected peers |
| TraceDemoteHotFailed Int Int peeraddr SomeException | target active, actual active, peer, reason |
| TraceDemoteHotDone Int Int peeraddr | target active, actual active, peer |
| TraceDemoteHotBigLedgerPeers Int Int (Set peeraddr) | target active big ledger peers, actual active big ledger peers, selected peers |
| TraceDemoteHotBigLedgerPeerFailed Int Int peeraddr SomeException | target active big ledger peers, actual active big ledger peers, peer, reason |
| TraceDemoteHotBigLedgerPeerDone Int Int peeraddr | target active big ledger peers, actual active big ledger peers, peer |
| TraceDemoteAsynchronous (Map peeraddr (PeerStatus, Maybe RepromoteDelay)) | |
| TraceDemoteLocalAsynchronous (Map peeraddr (PeerStatus, Maybe RepromoteDelay)) | |
| TraceDemoteBigLedgerPeersAsynchronous (Map peeraddr (PeerStatus, Maybe RepromoteDelay)) | |
| TraceGovernorWakeup | |
| TraceChurnWait DiffTime | |
| TraceChurnAction | |
Fields
| |
| TraceChurnTimeout | |
Fields
| |
| TraceOnlyBootstrapPeers | |
| TraceBootstrapPeersFlagChangedWhilstInSensitiveState | |
| TraceVerifyPeerSnapshot Bool | |
| TraceOutboundGovernorCriticalFailure SomeException | |
| TraceDebugState Time (DebugPeerSelectionState extraDebugState extraFlags extraPeers peeraddr) | |
| ExtraTrace extraTrace | |
Instances
| (Ord peeraddr, Show extraFlags, Show extraPeers, Show peeraddr, Show extraDebugState, Show extraTrace) => Show (TracePeerSelection extraDebugState extraFlags extraPeers extraTrace peeraddr) | |
Defined in Ouroboros.Network.PeerSelection.Governor.Types Methods showsPrec :: Int -> TracePeerSelection extraDebugState extraFlags extraPeers extraTrace peeraddr -> ShowS # show :: TracePeerSelection extraDebugState extraFlags extraPeers extraTrace peeraddr -> String # showList :: [TracePeerSelection extraDebugState extraFlags extraPeers extraTrace peeraddr] -> ShowS # | |
data PeerSharingResult peerAddress #
Constructors
| PeerSharingResult [peerAddress] | |
| PeerSharingNotRegisteredYet |
Instances
| Show peerAddress => Show (PeerSharingResult peerAddress) | |
Defined in Ouroboros.Network.Protocol.PeerSharing.Type Methods showsPrec :: Int -> PeerSharingResult peerAddress -> ShowS # show :: PeerSharingResult peerAddress -> String # showList :: [PeerSharingResult peerAddress] -> ShowS # | |
| Eq peerAddress => Eq (PeerSharingResult peerAddress) | |
Defined in Ouroboros.Network.Protocol.PeerSharing.Type Methods (==) :: PeerSharingResult peerAddress -> PeerSharingResult peerAddress -> Bool # (/=) :: PeerSharingResult peerAddress -> PeerSharingResult peerAddress -> Bool # | |
newtype PeerSharingAmount #
Constructors
| PeerSharingAmount | |
Instances
| Enum PeerSharingAmount | |||||
Defined in Ouroboros.Network.Protocol.PeerSharing.Type Methods succ :: PeerSharingAmount -> PeerSharingAmount # pred :: PeerSharingAmount -> PeerSharingAmount # toEnum :: Int -> PeerSharingAmount # fromEnum :: PeerSharingAmount -> Int # enumFrom :: PeerSharingAmount -> [PeerSharingAmount] # enumFromThen :: PeerSharingAmount -> PeerSharingAmount -> [PeerSharingAmount] # enumFromTo :: PeerSharingAmount -> PeerSharingAmount -> [PeerSharingAmount] # enumFromThenTo :: PeerSharingAmount -> PeerSharingAmount -> PeerSharingAmount -> [PeerSharingAmount] # | |||||
| Generic PeerSharingAmount | |||||
Defined in Ouroboros.Network.Protocol.PeerSharing.Type Associated Types
Methods from :: PeerSharingAmount -> Rep PeerSharingAmount x # to :: Rep PeerSharingAmount x -> PeerSharingAmount # | |||||
| Num PeerSharingAmount | |||||
Defined in Ouroboros.Network.Protocol.PeerSharing.Type Methods (+) :: PeerSharingAmount -> PeerSharingAmount -> PeerSharingAmount # (-) :: PeerSharingAmount -> PeerSharingAmount -> PeerSharingAmount # (*) :: PeerSharingAmount -> PeerSharingAmount -> PeerSharingAmount # negate :: PeerSharingAmount -> PeerSharingAmount # abs :: PeerSharingAmount -> PeerSharingAmount # signum :: PeerSharingAmount -> PeerSharingAmount # fromInteger :: Integer -> PeerSharingAmount # | |||||
| Integral PeerSharingAmount | |||||
Defined in Ouroboros.Network.Protocol.PeerSharing.Type Methods quot :: PeerSharingAmount -> PeerSharingAmount -> PeerSharingAmount # rem :: PeerSharingAmount -> PeerSharingAmount -> PeerSharingAmount # div :: PeerSharingAmount -> PeerSharingAmount -> PeerSharingAmount # mod :: PeerSharingAmount -> PeerSharingAmount -> PeerSharingAmount # quotRem :: PeerSharingAmount -> PeerSharingAmount -> (PeerSharingAmount, PeerSharingAmount) # divMod :: PeerSharingAmount -> PeerSharingAmount -> (PeerSharingAmount, PeerSharingAmount) # toInteger :: PeerSharingAmount -> Integer # | |||||
| Real PeerSharingAmount | |||||
Defined in Ouroboros.Network.Protocol.PeerSharing.Type Methods toRational :: PeerSharingAmount -> Rational # | |||||
| Show PeerSharingAmount | |||||
Defined in Ouroboros.Network.Protocol.PeerSharing.Type Methods showsPrec :: Int -> PeerSharingAmount -> ShowS # show :: PeerSharingAmount -> String # showList :: [PeerSharingAmount] -> ShowS # | |||||
| Eq PeerSharingAmount | |||||
Defined in Ouroboros.Network.Protocol.PeerSharing.Type Methods (==) :: PeerSharingAmount -> PeerSharingAmount -> Bool # (/=) :: PeerSharingAmount -> PeerSharingAmount -> Bool # | |||||
| Ord PeerSharingAmount | |||||
Defined in Ouroboros.Network.Protocol.PeerSharing.Type Methods compare :: PeerSharingAmount -> PeerSharingAmount -> Ordering # (<) :: PeerSharingAmount -> PeerSharingAmount -> Bool # (<=) :: PeerSharingAmount -> PeerSharingAmount -> Bool # (>) :: PeerSharingAmount -> PeerSharingAmount -> Bool # (>=) :: PeerSharingAmount -> PeerSharingAmount -> Bool # max :: PeerSharingAmount -> PeerSharingAmount -> PeerSharingAmount # min :: PeerSharingAmount -> PeerSharingAmount -> PeerSharingAmount # | |||||
| Serialise PeerSharingAmount | |||||
Defined in Ouroboros.Network.Protocol.PeerSharing.Type Methods encode :: PeerSharingAmount -> Encoding # decode :: Decoder s PeerSharingAmount # encodeList :: [PeerSharingAmount] -> Encoding # decodeList :: Decoder s [PeerSharingAmount] # | |||||
| type Rep PeerSharingAmount | |||||
Defined in Ouroboros.Network.Protocol.PeerSharing.Type type Rep PeerSharingAmount = D1 ('MetaData "PeerSharingAmount" "Ouroboros.Network.Protocol.PeerSharing.Type" "ouroboros-network-0.23.0.0-inplace-protocols" 'True) (C1 ('MetaCons "PeerSharingAmount" 'PrefixI 'True) (S1 ('MetaSel ('Just "getAmount") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word8))) | |||||
getPromotedHotTime :: forall (m :: Type -> Type) (muxMode :: Mode) responderCtx peerAddr versionData bytes a b. MonadSTM m => PeerConnectionHandle muxMode responderCtx peerAddr versionData bytes m a b -> STM m (Maybe Time) #
Retrieve the time the remote peer has been promoted to hot state or Nothing if either the peer was not promoted or is being currently demoted
pchPeerSharing :: forall versionData (muxMode :: Mode) responderCtx peerAddr bytes (m :: Type -> Type) a b. (versionData -> PeerSharing) -> PeerConnectionHandle muxMode responderCtx peerAddr versionData bytes m a b -> PeerSharing #
withPeerStateActions :: forall (muxMode :: Mode) socket responderCtx peerAddr versionData versionNumber m a b x. (Alternative (STM m), MonadAsync m, MonadCatch m, MonadLabelledSTM m, MonadFork m, MonadMask m, MonadTimer m, MonadThrow (STM m), HasInitiator muxMode ~ 'True, Typeable versionNumber, Show versionNumber, Ord peerAddr, Typeable peerAddr, Show peerAddr) => PeerStateActionsArguments muxMode socket responderCtx peerAddr versionData versionNumber m a b -> (PeerStateActions peerAddr (PeerConnectionHandle muxMode responderCtx peerAddr versionData ByteString m a b) m -> m x) -> m x #
data EstablishConnectionException versionNumber #
Constructors
| ClientException !(HandshakeException versionNumber) | Handshake client failed |
| ServerException !(HandshakeException versionNumber) | Handshake server failed |
Instances
| (Show versionNumber, Typeable versionNumber) => Exception (EstablishConnectionException versionNumber) | |
Defined in Ouroboros.Network.PeerSelection.PeerStateActions Methods toException :: EstablishConnectionException versionNumber -> SomeException # fromException :: SomeException -> Maybe (EstablishConnectionException versionNumber) # displayException :: EstablishConnectionException versionNumber -> String # backtraceDesired :: EstablishConnectionException versionNumber -> Bool # | |
| Show versionNumber => Show (EstablishConnectionException versionNumber) | |
Defined in Ouroboros.Network.PeerSelection.PeerStateActions Methods showsPrec :: Int -> EstablishConnectionException versionNumber -> ShowS # show :: EstablishConnectionException versionNumber -> String # showList :: [EstablishConnectionException versionNumber] -> ShowS # | |
data FailureType versionNumber #
Type of failure with additional exception context; We don't log handshake errors as this will be done by the handshake tracer.
Constructors
| HandshakeClientFailure !(HandshakeException versionNumber) | |
| HandshakeServerFailure !(HandshakeException versionNumber) | |
| HandleFailure !SomeException | |
| MuxStoppedFailure | |
| TimeoutError | |
| ActiveCold !PeerStatus | |
| ApplicationFailure ![MiniProtocolException] |
Instances
| Show versionNumber => Show (FailureType versionNumber) | |
Defined in Ouroboros.Network.PeerSelection.PeerStateActions Methods showsPrec :: Int -> FailureType versionNumber -> ShowS # show :: FailureType versionNumber -> String # showList :: [FailureType versionNumber] -> ShowS # | |
data MonitorPeerConnectionBlocked #
Throw an exception when monitorPeerConnection blocks.
Constructors
| MonitorPeerConnectionBlocked |
Instances
| Exception MonitorPeerConnectionBlocked | |
| Show MonitorPeerConnectionBlocked | |
Defined in Ouroboros.Network.PeerSelection.PeerStateActions Methods showsPrec :: Int -> MonitorPeerConnectionBlocked -> ShowS # show :: MonitorPeerConnectionBlocked -> String # showList :: [MonitorPeerConnectionBlocked] -> ShowS # | |
data PeerConnectionHandle (muxMode :: Mode) responderCtx peerAddr versionData bytes (m :: Type -> Type) a b #
Each established connection has access to PeerConnectionHandle. It
allows to promote / demote or close the connection, by having access to
Mux, three bundles of miniprotocols: for hot, warm and established peers
together with their state StrictTVars.
Instances
| (Show peerAddr, Show versionData) => Show (PeerConnectionHandle muxMode responderCtx peerAddr versionData bytes m a b) | |
Defined in Ouroboros.Network.PeerSelection.PeerStateActions Methods showsPrec :: Int -> PeerConnectionHandle muxMode responderCtx peerAddr versionData bytes m a b -> ShowS # show :: PeerConnectionHandle muxMode responderCtx peerAddr versionData bytes m a b -> String # showList :: [PeerConnectionHandle muxMode responderCtx peerAddr versionData bytes m a b] -> ShowS # | |
data PeerSelectionActionException #
Parent exception of all peer selection action exceptions.
Constructors
| Exception e => PeerSelectionActionException e |
Instances
| Exception PeerSelectionActionException | |
| Show PeerSelectionActionException | |
Defined in Ouroboros.Network.PeerSelection.PeerStateActions Methods showsPrec :: Int -> PeerSelectionActionException -> ShowS # show :: PeerSelectionActionException -> String # showList :: [PeerSelectionActionException] -> ShowS # | |
data PeerSelectionActionsTrace peerAddr vNumber #
Traces produced by peerSelectionActions.
Constructors
| PeerStatusChanged (PeerStatusChangeType peerAddr) | |
| PeerStatusChangeFailure (PeerStatusChangeType peerAddr) (FailureType vNumber) | |
| PeerMonitoringError (ConnectionId peerAddr) SomeException | |
| PeerMonitoringResult (ConnectionId peerAddr) (Maybe (WithSomeProtocolTemperature FirstToFinishResult)) | |
| AcquireConnectionError SomeException | |
| PeerHotDuration (ConnectionId peerAddr) DiffTime |
Instances
| (Show peerAddr, Show vNumber) => Show (PeerSelectionActionsTrace peerAddr vNumber) | |
Defined in Ouroboros.Network.PeerSelection.PeerStateActions Methods showsPrec :: Int -> PeerSelectionActionsTrace peerAddr vNumber -> ShowS # show :: PeerSelectionActionsTrace peerAddr vNumber -> String # showList :: [PeerSelectionActionsTrace peerAddr vNumber] -> ShowS # | |
data PeerSelectionTimeoutException peerAddr #
Constructors
| DeactivationTimeout !(ConnectionId peerAddr) |
Instances
| (Show peerAddr, Typeable peerAddr) => Exception (PeerSelectionTimeoutException peerAddr) | |
Defined in Ouroboros.Network.PeerSelection.PeerStateActions Methods toException :: PeerSelectionTimeoutException peerAddr -> SomeException # fromException :: SomeException -> Maybe (PeerSelectionTimeoutException peerAddr) # displayException :: PeerSelectionTimeoutException peerAddr -> String # backtraceDesired :: PeerSelectionTimeoutException peerAddr -> Bool # | |
| Show peerAddr => Show (PeerSelectionTimeoutException peerAddr) | |
Defined in Ouroboros.Network.PeerSelection.PeerStateActions Methods showsPrec :: Int -> PeerSelectionTimeoutException peerAddr -> ShowS # show :: PeerSelectionTimeoutException peerAddr -> String # showList :: [PeerSelectionTimeoutException peerAddr] -> ShowS # | |
data PeerStateActionsArguments (muxMode :: Mode) socket responderCtx peerAddr versionData versionNumber (m :: Type -> Type) a b #
Record of arguments of peerSelectionActions.
Constructors
| PeerStateActionsArguments | |
Fields
| |
data PeerStatusChangeType peerAddr #
All transitions.
Constructors
| ColdToWarm | During the |
Fields
| |
| WarmToHot !(ConnectionId peerAddr) | |
| HotToWarm !(ConnectionId peerAddr) | |
| WarmToCooling !(ConnectionId peerAddr) | |
| HotToCooling !(ConnectionId peerAddr) | |
| CoolingToCold !(ConnectionId peerAddr) | |
Instances
| Show peerAddr => Show (PeerStatusChangeType peerAddr) | |
Defined in Ouroboros.Network.PeerSelection.PeerStateActions Methods showsPrec :: Int -> PeerStatusChangeType peerAddr -> ShowS # show :: PeerStatusChangeType peerAddr -> String # showList :: [PeerStatusChangeType peerAddr] -> ShowS # | |
peerSelectionGovernor :: (Alternative (STM m), MonadAsync m, MonadDelay m, MonadLabelledSTM m, MonadMask m, MonadTimer m, Ord peeraddr, Show peerconn, Hashable peeraddr, Exception exception, Eq extraCounters, Semigroup extraPeers, Eq extraFlags) => Tracer m (TracePeerSelection extraDebugState extraFlags extraPeers extraTrace peeraddr) -> Tracer m (DebugPeerSelection extraState extraFlags extraPeers peeraddr) -> Tracer m (PeerSelectionCounters extraCounters) -> PeerSelectionGovernorArgs extraState extraDebugState extraFlags extraPeers extraAPI extraCounters extraTrace peeraddr peerconn exception m -> StdGen -> extraState -> extraPeers -> PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m -> PeerSelectionPolicy peeraddr m -> PeerSelectionInterfaces extraState extraFlags extraPeers extraCounters peeraddr peerconn m -> m Void #
requestPeerSharingResult :: (MonadSTM m, MonadMVar m, Ord peeraddr) => STM m (Map peeraddr (PeerSharingController peeraddr m)) -> PeerSharingAmount -> peeraddr -> m (PeerSharingResult peeraddr) #
Arguments
| :: forall extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn resolver m a. (Alternative (STM m), MonadAsync m, MonadDelay m, MonadThrow m, Ord peeraddr, Eq extraFlags) | |
| => Tracer m (TraceLocalRootPeers extraFlags peeraddr) | |
| -> StrictTVar m (Config extraFlags peeraddr) | |
| -> PeerActionsDNS peeraddr resolver m | |
| -> ((NumberOfPeers -> LedgerPeersKind -> m (Maybe (Set peeraddr, DiffTime))) -> PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m) | construct PeerSelectionActions given a function which obtains ledger
peers that is supplied by |
| -> WithLedgerPeersArgs extraAPI m | |
| -> StdGen | |
| -> ((Async m Void, Async m Void) -> 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). |
| -> m a |