| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Ouroboros.Network.PeerSelection
Synopsis
- 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)
- data PeerSelectionTargets = PeerSelectionTargets {}
- data PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn
- 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
- 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 PickPolicy peeraddr (m :: Type -> Type) = (peeraddr -> PeerSource) -> (peeraddr -> Int) -> (peeraddr -> Bool) -> Set peeraddr -> Int -> m (Set peeraddr)
- 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 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 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 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 AssociationMode
- data DebugPeerSelectionState extraState extraFlags extraPeers peeraddr = DebugPeerSelectionState {
- dpssTargets :: !PeerSelectionTargets
- dpssLocalRootPeers :: !(LocalRootPeers extraFlags peeraddr)
- dpssPublicRootPeers :: !(PublicRootPeers extraPeers peeraddr)
- dpssKnownPeers :: !(KnownPeers peeraddr)
- dpssEstablishedPeers :: !(Set peeraddr)
- dpssActivePeers :: !(Set peeraddr)
- dpssPublicRootBackoffs :: !Int
- dpssPublicRootRetryTime :: !Time
- dpssInProgressPublicRootsReq :: !Bool
- dpssBigLedgerPeerBackoffs :: !Int
- dpssBigLedgerPeerRetryTime :: !Time
- dpssInProgressBigLedgerPeersReq :: !Bool
- dpssInProgressPeerShareReqs :: !Int
- dpssInProgressPromoteCold :: !(Set peeraddr)
- dpssInProgressPromoteWarm :: !(Set peeraddr)
- dpssInProgressDemoteWarm :: !(Set peeraddr)
- dpssInProgressDemoteHot :: !(Set peeraddr)
- dpssInProgressDemoteToCold :: !(Set peeraddr)
- dpssUpstreamyness :: !(Map peeraddr Int)
- dpssFetchynessBlocks :: !(Map peeraddr Int)
- dpssAssociationMode :: !AssociationMode
- dpssHotDurations :: !(Map peeraddr (IsBigLedgerPeer, DiffTime))
- dpssExtraState :: !extraState
- 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
- assertPeerSelectionState :: Ord peeraddr => (extraPeers -> Set peeraddr) -> (extraPeers -> Bool) -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> a -> a
- sanePeerSelectionTargets :: PeerSelectionTargets -> Bool
- establishedPeersStatus :: Ord peeraddr => PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> Map peeraddr PeerStatus
- newtype PublicPeerSelectionState peeraddr = PublicPeerSelectionState {
- availableToShare :: Set peeraddr
- makePublicPeerSelectionStateVar :: (MonadSTM m, Ord peeraddr) => m (StrictTVar m (PublicPeerSelectionState peeraddr))
- 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 {
- type PeerSelectionCounters extraCounters = PeerSelectionView extraCounters Int
- type PeerSelectionSetsWithSizes extraViews peeraddr = PeerSelectionView extraViews (Set peeraddr, Int)
- peerSelectionStateToCounters :: Ord peeraddr => (extraPeers -> Set peeraddr) -> (PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> extraCounters) -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> PeerSelectionCounters extraCounters
- emptyPeerSelectionCounters :: extraCounters -> PeerSelectionCounters extraCounters
- nullPeerSelectionTargets :: PeerSelectionTargets
- emptyPeerSelectionState :: StdGen -> extraState -> extraPeers -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn
- peerSelectionStateToView :: Ord peeraddr => (extraPeers -> Set peeraddr) -> (PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> extraViews) -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> PeerSelectionSetsWithSizes extraViews peeraddr
- module Ouroboros.Network.PeerSelection.Types
- module Ouroboros.Network.PeerSelection.Types
- data PublicRootPeers extraPeers peeraddr
- module Ouroboros.Network.PeerSelection.PeerStateActions
- data PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn (m :: Type -> Type) = PeerSelectionActions PeerSelectionTargets (STM m PeerSelectionTargets) (STM m (Config extraFlags RelayAccessPoint)) (STM m (Config extraFlags peeraddr)) (m (Map peeraddr PeerSharing)) PeerSharing (peerconn -> PeerSharing) (PublicExtraPeersAPI extraPeers peeraddr) (PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> extraCounters) (LedgerPeersKind -> StdGen -> Int -> m (PublicRootPeers extraPeers peeraddr, DiffTime)) (PeerSharingAmount -> peeraddr -> m (PeerSharingResult peeraddr)) (PeerStateActions peeraddr peerconn m) (LedgerPeersConsensusInterface extraAPI m) (STM m (Maybe LedgerPeerSnapshot))
- 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
- requestPeerSharingResult :: (MonadSTM m, MonadMVar m, Ord peeraddr) => STM m (Map peeraddr (PeerSharingController peeraddr m)) -> PeerSharingAmount -> peeraddr -> m (PeerSharingResult peeraddr)
- data IP
- data PortNumber
- data RelayAccessPoint
- type SRVPrefix = Domain
- data LedgerRelayAccessPoint
- newtype LedgerRelayAccessPointV1 = LedgerRelayAccessPointV1 {}
- prefixLedgerRelayAccessPoint :: SRVPrefix -> LedgerRelayAccessPoint -> RelayAccessPoint
- data AfterSlot
- data UseLedgerPeers
- data LedgerPeers
- data IsBigLedgerPeer
- data LedgerPeerSnapshot where
- LedgerPeerSnapshotV2 (WithOrigin SlotNo, [(AccPoolStake, (PoolStake, NonEmpty LedgerRelayAccessPoint))])
- pattern LedgerPeerSnapshot :: (WithOrigin SlotNo, [(AccPoolStake, (PoolStake, NonEmpty LedgerRelayAccessPoint))]) -> LedgerPeerSnapshot
- data LedgerPeersConsensusInterface extraAPI (m :: Type -> Type) = LedgerPeersConsensusInterface {
- lpGetLatestSlot :: STM m (WithOrigin SlotNo)
- lpGetLedgerPeers :: STM m [(PoolStake, NonEmpty LedgerRelayAccessPoint)]
- lpExtraAPI :: extraAPI
- data LedgerPeersKind
- newtype NumberOfPeers = NumberOfPeers {}
- newtype PoolStake = PoolStake {}
- 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 {}
- 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 PeerMetrics (m :: Type -> Type) p
- newtype PeerMetricsConfiguration = PeerMetricsConfiguration {}
- 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 PeerAdvertise
- data PeerSharing
- newtype PeerSharingAmount = PeerSharingAmount {}
- data PeerSharingResult peerAddress
- = PeerSharingResult [peerAddress]
- | PeerSharingNotRegisteredYet
- newtype Resource (m :: Type -> Type) a = Resource {
- withResource :: m (a, Resource m a)
- type SRVPrefix = Domain
- data DNSorIOError
- 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))
- 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)
- data DNSSemaphore (m :: Type -> Type)
- data PeerActionsDNS peeraddr resolver (m :: Type -> Type) = PeerActionsDNS {
- paToPeerAddr :: IP -> PortNumber -> peeraddr
- paDnsActions :: DNSActions peeraddr resolver m
- ioDNSActions :: Tracer IO DNSTrace -> DNSLookupType -> (IP -> PortNumber -> peerAddr) -> DNSActions peerAddr Resolver IO
- data DNSLookupType
- type DNSLookupResult peerAddr = Either [DNSError] [(peerAddr, TTL)]
- data DNSTrace
- retryResource :: forall (m :: Type -> Type) e a. MonadDelay m => Tracer m e -> NonEmpty DiffTime -> Resource m (Either e a) -> Resource m a
- 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)
- data DNSPeersKind
- newLedgerAndPublicRootDNSSemaphore :: MonadSTM m => m (DNSSemaphore m)
- newDNSLocalRootSemaphore :: forall (m :: Type -> Type). MonadSTM m => STM m (DNSSemaphore m)
- withDNSSemaphore :: (MonadSTM m, MonadThrow m) => DNSSemaphore m -> m a -> m a
- 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
- 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 KnownPeerInfo = KnownPeerInfo {}
- data LocalRootPeers extraFlags peeraddr
- newtype HotValency = HotValency {
- getHotValency :: Int
- data LocalRootConfig extraFlags = LocalRootConfig {
- peerAdvertise :: !PeerAdvertise
- diffusionMode :: !DiffusionMode
- extraLocalRootFlags :: !extraFlags
- newtype WarmValency = WarmValency {}
Documentation
data PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn (m :: Type -> Type) Source #
Constructors
| PeerSelectionActions | |
Fields
| |
data PeerSelectionTargets Source #
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 Source # | |
Defined in Ouroboros.Network.PeerSelection.Governor.Types Methods showsPrec :: Int -> PeerSelectionTargets -> ShowS # show :: PeerSelectionTargets -> String # showList :: [PeerSelectionTargets] -> ShowS # | |
| Eq PeerSelectionTargets Source # | |
Defined in Ouroboros.Network.PeerSelection.Governor.Types Methods (==) :: PeerSelectionTargets -> PeerSelectionTargets -> Bool # (/=) :: PeerSelectionTargets -> PeerSelectionTargets -> Bool # | |
data PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn Source #
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) Source # | |
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 PeerStateActions peeraddr peerconn (m :: Type -> Type) Source #
Callbacks which are performed to change peer state.
Constructors
| PeerStateActions | |
Fields
| |
data PeerSelectionPolicy peeraddr (m :: Type -> Type) Source #
Constructors
type PickPolicy peeraddr (m :: Type -> Type) = (peeraddr -> PeerSource) -> (peeraddr -> Int) -> (peeraddr -> Bool) -> Set peeraddr -> Int -> m (Set peeraddr) Source #
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.
data PeerSelectionInterfaces extraState extraFlags extraPeers extraCounters peeraddr peerconn (m :: Type -> Type) Source #
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 PeerSelectionGovernorArgs extraState extraDebugState extraFlags extraPeers extraAPI extraCounters extraTrace peeraddr peerconn exception (m :: Type -> Type) Source #
Constructors
| PeerSelectionGovernorArgs | |
Fields
| |
data TracePeerSelection extraDebugState extraFlags extraPeers extraTrace peeraddr Source #
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) Source # | |
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 ChurnAction Source #
Constructors
Instances
| Show ChurnAction Source # | |
Defined in Ouroboros.Network.PeerSelection.Governor.Types Methods showsPrec :: Int -> ChurnAction -> ShowS # show :: ChurnAction -> String # showList :: [ChurnAction] -> ShowS # | |
| Eq ChurnAction Source # | |
data DebugPeerSelection extraState extraFlags extraPeers peeraddr where Source #
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) Source # | |
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 AssociationMode Source #
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 Source # | |
Defined in Ouroboros.Network.PeerSelection.Governor.Types Methods showsPrec :: Int -> AssociationMode -> ShowS # show :: AssociationMode -> String # showList :: [AssociationMode] -> ShowS # | |
data DebugPeerSelectionState extraState extraFlags extraPeers peeraddr Source #
Constructors
| DebugPeerSelectionState | |
Fields
| |
Instances
| (Ord peeraddr, Show extraFlags, Show peeraddr, Show extraPeers, Show extraState) => Show (DebugPeerSelectionState extraState extraFlags extraPeers peeraddr) Source # | |
Defined in Ouroboros.Network.PeerSelection.Governor.Types Methods showsPrec :: Int -> DebugPeerSelectionState extraState extraFlags extraPeers peeraddr -> ShowS # show :: DebugPeerSelectionState extraState extraFlags extraPeers peeraddr -> String # showList :: [DebugPeerSelectionState extraState extraFlags extraPeers 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 Source #
assertPeerSelectionState Source #
Arguments
| :: Ord peeraddr | |
| => (extraPeers -> Set peeraddr) | This function comes from |
| -> (extraPeers -> Bool) | This function comes from |
| -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn | |
| -> a | |
| -> a |
establishedPeersStatus :: Ord peeraddr => PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> Map peeraddr PeerStatus Source #
A view of the status of each established peer, for testing and debugging.
newtype PublicPeerSelectionState peeraddr Source #
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
| |
makePublicPeerSelectionStateVar :: (MonadSTM m, Ord peeraddr) => m (StrictTVar m (PublicPeerSelectionState peeraddr)) Source #
data PeerSelectionView extraViews a Source #
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) Source # | |
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) Source # | |
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) Source # | |
Defined in Ouroboros.Network.PeerSelection.Governor.Types Methods (==) :: PeerSelectionView extraViews a -> PeerSelectionView extraViews a -> Bool # (/=) :: PeerSelectionView extraViews a -> PeerSelectionView extraViews a -> Bool # | |
type PeerSelectionCounters extraCounters = PeerSelectionView extraCounters Int Source #
type PeerSelectionSetsWithSizes extraViews peeraddr = PeerSelectionView extraViews (Set peeraddr, Int) Source #
peerSelectionStateToCounters Source #
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 |
emptyPeerSelectionCounters :: extraCounters -> PeerSelectionCounters extraCounters Source #
emptyPeerSelectionState :: StdGen -> extraState -> extraPeers -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn Source #
peerSelectionStateToView :: Ord peeraddr => (extraPeers -> Set peeraddr) -> (PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> extraViews) -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> PeerSelectionSetsWithSizes extraViews peeraddr Source #
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 PublicRootPeers extraPeers peeraddr Source #
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
| (Show peeraddr, Show extraPeers) => Show (PublicRootPeers extraPeers peeraddr) Source # | |
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) Source # | |
Defined in Ouroboros.Network.PeerSelection.PublicRootPeers Methods (==) :: PublicRootPeers extraPeers peeraddr -> PublicRootPeers extraPeers peeraddr -> Bool # (/=) :: PublicRootPeers extraPeers peeraddr -> PublicRootPeers extraPeers peeraddr -> Bool # | |
data PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn (m :: Type -> Type) Source #
Constructors
| PeerSelectionActions PeerSelectionTargets (STM m PeerSelectionTargets) (STM m (Config extraFlags RelayAccessPoint)) (STM m (Config extraFlags peeraddr)) (m (Map peeraddr PeerSharing)) PeerSharing (peerconn -> PeerSharing) (PublicExtraPeersAPI extraPeers peeraddr) (PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> extraCounters) (LedgerPeersKind -> StdGen -> Int -> m (PublicRootPeers extraPeers peeraddr, DiffTime)) (PeerSharingAmount -> peeraddr -> m (PeerSharingResult peeraddr)) (PeerStateActions peeraddr peerconn m) (LedgerPeersConsensusInterface extraAPI m) (STM m (Maybe LedgerPeerSnapshot)) |
withPeerSelectionActions Source #
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 |
requestPeerSharingResult :: (MonadSTM m, MonadMVar m, Ord peeraddr) => STM m (Map peeraddr (PeerSharingController peeraddr m)) -> PeerSharingAmount -> peeraddr -> m (PeerSharingResult 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-9cbdeead1ad2dac143f0d52d2bd4e8985efc2da022ee700aca7f7cbbf02b48d0" '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
data RelayAccessPoint #
Constructors
| RelayAccessDomain !Domain !PortNumber | |
| RelayAccessSRVDomain !Domain | |
| RelayAccessAddress !IP !PortNumber |
Instances
data LedgerRelayAccessPoint #
Constructors
| LedgerRelayAccessDomain !Domain !PortNumber | |
| LedgerRelayAccessSRVDomain !Domain | |
| LedgerRelayAccessAddress !IP !PortNumber |
Instances
Instances
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 LedgerPeers Source #
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 Source # | |
Defined in Ouroboros.Network.PeerSelection.LedgerPeers Methods showsPrec :: Int -> LedgerPeers -> ShowS # show :: LedgerPeers -> String # showList :: [LedgerPeers] -> ShowS # | |
| Eq LedgerPeers Source # | |
Defined in Ouroboros.Network.PeerSelection.LedgerPeers | |
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 # | |
data LedgerPeersConsensusInterface extraAPI (m :: Type -> Type) #
Constructors
| LedgerPeersConsensusInterface | |
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 # | |
newtype NumberOfPeers Source #
Number of peers to pick.
Constructors
| NumberOfPeers | |
Fields | |
Instances
| Show NumberOfPeers Source # | |
Defined in Ouroboros.Network.PeerSelection.LedgerPeers Methods showsPrec :: Int -> NumberOfPeers -> ShowS # show :: NumberOfPeers -> String # showList :: [NumberOfPeers] -> ShowS # | |
Constructors
| PoolStake | |
Fields | |
Instances
| NFData PoolStake | |
| Num PoolStake | |
| Fractional PoolStake | |
| Show PoolStake | |
| Eq PoolStake | |
| Ord PoolStake | |
data TraceLedgerPeers Source #
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 Source # | |
Defined in Ouroboros.Network.PeerSelection.LedgerPeers Methods showsPrec :: Int -> TraceLedgerPeers -> ShowS # show :: TraceLedgerPeers -> String # showList :: [TraceLedgerPeers] -> ShowS # | |
data WithLedgerPeersArgs extraAPI (m :: Type -> Type) Source #
Argument record for withLedgerPeers
Constructors
| WithLedgerPeersArgs | |
Fields
| |
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 Source #
For a LedgerPeers worker thread and submit request and receive responses.
newtype PeerMetricsConfiguration Source #
Constructors
| PeerMetricsConfiguration | |
Fields
| |
Instances
| NFData PeerMetricsConfiguration Source # | |||||
Defined in Ouroboros.Network.PeerSelection.PeerMetric Methods rnf :: PeerMetricsConfiguration -> () # | |||||
| Generic PeerMetricsConfiguration Source # | |||||
Defined in Ouroboros.Network.PeerSelection.PeerMetric Associated Types
Methods from :: PeerMetricsConfiguration -> Rep PeerMetricsConfiguration x # to :: Rep PeerMetricsConfiguration x -> PeerMetricsConfiguration # | |||||
| Show PeerMetricsConfiguration Source # | |||||
Defined in Ouroboros.Network.PeerSelection.PeerMetric Methods showsPrec :: Int -> PeerMetricsConfiguration -> ShowS # show :: PeerMetricsConfiguration -> String # showList :: [PeerMetricsConfiguration] -> ShowS # | |||||
| NoThunks PeerMetricsConfiguration Source # | |||||
Defined in Ouroboros.Network.PeerSelection.PeerMetric | |||||
| type Rep PeerMetricsConfiguration Source # | |||||
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 ReportPeerMetrics (m :: Type -> Type) peerAddr #
Constructors
| ReportPeerMetrics | |
Fields
| |
newPeerMetric :: (MonadLabelledSTM m, NoThunks p, NFData p) => PeerMetricsConfiguration -> m (PeerMetrics m p) Source #
newPeerMetric' :: (MonadLabelledSTM m, NoThunks p, NFData p) => SlotMetric p -> SlotMetric (p, SizeInBytes) -> PeerMetricsConfiguration -> m (PeerMetrics m p) Source #
nullMetric :: forall (m :: Type -> Type) p. MonadSTM m => ReportPeerMetrics m p Source #
reportMetric :: forall (m :: Type -> Type) p. (MonadSTM m, Ord p) => PeerMetricsConfiguration -> PeerMetrics m p -> ReportPeerMetrics m (ConnectionId p) Source #
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 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 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))) | |||||
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 Resource (m :: Type -> Type) a Source #
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 DNSorIOError Source #
Instances
| Exception DNSorIOError Source # | |
Defined in Ouroboros.Network.PeerSelection.RootPeersDNS.DNSActions Methods toException :: DNSorIOError -> SomeException # fromException :: SomeException -> Maybe DNSorIOError # displayException :: DNSorIOError -> String # backtraceDesired :: DNSorIOError -> Bool # | |
| Show DNSorIOError Source # | |
Defined in Ouroboros.Network.PeerSelection.RootPeersDNS.DNSActions Methods showsPrec :: Int -> DNSorIOError -> ShowS # show :: DNSorIOError -> String # showList :: [DNSorIOError] -> ShowS # | |
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)) Source #
Provides DNS resolution functionality.
Concurrently resolve DNS names, respecting the maxDNSConcurrency limit.
data DNSActions peerAddr resolver (m :: Type -> Type) Source #
Dictionary of DNS actions vocabulary
Constructors
| DNSActions | |
Fields
| |
data DNSSemaphore (m :: Type -> Type) Source #
A semaphore used to limit concurrency of dns names resolution.
data PeerActionsDNS peeraddr resolver (m :: Type -> Type) Source #
Record of some parameters that are commonly used together
TODO: rename as PeerDNSActions; can we bundle paToPeerAddr with
DNSActions?
Constructors
| PeerActionsDNS | |
Fields
| |
ioDNSActions :: Tracer IO DNSTrace -> DNSLookupType -> (IP -> PortNumber -> peerAddr) -> DNSActions peerAddr Resolver IO Source #
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.
data DNSLookupType Source #
Constructors
| LookupReqAOnly | |
| LookupReqAAAAOnly | |
| LookupReqAAndAAAA |
Instances
| Show DNSLookupType Source # | |
Defined in Ouroboros.Network.PeerSelection.RootPeersDNS.DNSActions Methods showsPrec :: Int -> DNSLookupType -> ShowS # show :: DNSLookupType -> String # showList :: [DNSLookupType] -> ShowS # | |
type DNSLookupResult peerAddr = Either [DNSError] [(peerAddr, TTL)] Source #
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
| |
retryResource :: forall (m :: Type -> Type) e a. MonadDelay m => Tracer m e -> NonEmpty DiffTime -> Resource m (Either e a) -> Resource m a Source #
constantResource :: forall (m :: Type -> Type) a. Applicative m => a -> Resource m a Source #
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) Source #
data DNSPeersKind Source #
Bundled with DNS lookup trace for observability
Constructors
| DNSLocalPeer | |
| DNSPublicPeer | |
| DNSLedgerPeer LedgerPeersKind |
Instances
| Show DNSPeersKind Source # | |
Defined in Ouroboros.Network.PeerSelection.RootPeersDNS.DNSActions Methods showsPrec :: Int -> DNSPeersKind -> ShowS # show :: DNSPeersKind -> String # showList :: [DNSPeersKind] -> ShowS # | |
newLedgerAndPublicRootDNSSemaphore :: MonadSTM m => m (DNSSemaphore m) Source #
Create a DNSSemaphore for root and ledger peers.
newDNSLocalRootSemaphore :: forall (m :: Type -> Type). MonadSTM m => STM m (DNSSemaphore m) Source #
Create a DNSSemaphore for local root peers.
withDNSSemaphore :: (MonadSTM m, MonadThrow m) => DNSSemaphore m -> m a -> m a Source #
Run a computation by attempting to acquire the semaphore first. On termination or failure free the semaphore
localRootPeersProvider Source #
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 Source #
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) Source # | |
Defined in Ouroboros.Network.PeerSelection.RootPeersDNS.LocalRootPeers Methods showsPrec :: Int -> TraceLocalRootPeers extraFlags peerAddr -> ShowS # show :: TraceLocalRootPeers extraFlags peerAddr -> String # showList :: [TraceLocalRootPeers extraFlags peerAddr] -> ShowS # | |
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 Source #
fulfills a request from requestPublicRootPeers
data TracePublicRootPeers Source #
Constructors
| TracePublicRootRelayAccessPoint (Map RelayAccessPoint PeerAdvertise) | |
| TracePublicRootDomains [RelayAccessPoint] |
Instances
| Show TracePublicRootPeers Source # | |
Defined in Ouroboros.Network.PeerSelection.RootPeersDNS.PublicRootPeers Methods showsPrec :: Int -> TracePublicRootPeers -> ShowS # show :: TracePublicRootPeers -> String # showList :: [TracePublicRootPeers] -> ShowS # | |
data KnownPeerInfo Source #
Constructors
| KnownPeerInfo | |
Fields
| |
Instances
| Show KnownPeerInfo Source # | |
Defined in Ouroboros.Network.PeerSelection.State.KnownPeers Methods showsPrec :: Int -> KnownPeerInfo -> ShowS # show :: KnownPeerInfo -> String # showList :: [KnownPeerInfo] -> ShowS # | |
| Eq KnownPeerInfo Source # | |
Defined in Ouroboros.Network.PeerSelection.State.KnownPeers Methods (==) :: KnownPeerInfo -> KnownPeerInfo -> Bool # (/=) :: KnownPeerInfo -> KnownPeerInfo -> Bool # | |
data LocalRootPeers extraFlags peeraddr Source #
Instances
| (Show extraFlags, Show peeraddr, Ord peeraddr) => Show (LocalRootPeers extraFlags peeraddr) Source # | |
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) Source # | |
Defined in Ouroboros.Network.PeerSelection.State.LocalRootPeers Methods (==) :: LocalRootPeers extraFlags peeraddr -> LocalRootPeers extraFlags peeraddr -> Bool # (/=) :: LocalRootPeers extraFlags peeraddr -> LocalRootPeers extraFlags peeraddr -> Bool # | |
newtype HotValency Source #
Newtype wrapper representing hot valency value from local root group configuration
Constructors
| HotValency | |
Fields
| |
Instances
| Num HotValency Source # | |
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 Source # | |
Defined in Ouroboros.Network.PeerSelection.State.LocalRootPeers Methods showsPrec :: Int -> HotValency -> ShowS # show :: HotValency -> String # showList :: [HotValency] -> ShowS # | |
| Eq HotValency Source # | |
| Ord HotValency Source # | |
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 Source #
Constructors
| LocalRootConfig | |
Fields
| |
Instances
| Show extraFlags => Show (LocalRootConfig extraFlags) Source # | |
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) Source # | |
Defined in Ouroboros.Network.PeerSelection.State.LocalRootPeers Methods (==) :: LocalRootConfig extraFlags -> LocalRootConfig extraFlags -> Bool # (/=) :: LocalRootConfig extraFlags -> LocalRootConfig extraFlags -> Bool # | |
newtype WarmValency Source #
Newtype wrapper representing warm valency value from local root group configuration
Constructors
| WarmValency | |
Fields | |
Instances
| Num WarmValency Source # | |
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 Source # | |
Defined in Ouroboros.Network.PeerSelection.State.LocalRootPeers Methods showsPrec :: Int -> WarmValency -> ShowS # show :: WarmValency -> String # showList :: [WarmValency] -> ShowS # | |
| Eq WarmValency Source # | |
| Ord WarmValency Source # | |
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 # | |