ouroboros-network
Safe HaskellNone
LanguageHaskell2010

Ouroboros.Network.PeerSelection.PublicRootPeers

Synopsis

Types

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.

Constructors

PublicRootPeers 

Fields

Instances

Instances details
Ord peeraddr => Monoid (PublicRootPeers (ExtraPeers peeraddr) peeraddr) Source # 
Instance details

Defined in Ouroboros.Network.PeerSelection.PublicRootPeers

Methods

mempty :: PublicRootPeers (ExtraPeers peeraddr) peeraddr #

mappend :: PublicRootPeers (ExtraPeers peeraddr) peeraddr -> PublicRootPeers (ExtraPeers peeraddr) peeraddr -> PublicRootPeers (ExtraPeers peeraddr) peeraddr #

mconcat :: [PublicRootPeers (ExtraPeers peeraddr) peeraddr] -> PublicRootPeers (ExtraPeers peeraddr) peeraddr #

Ord peeraddr => Semigroup (PublicRootPeers (ExtraPeers peeraddr) peeraddr) Source # 
Instance details

Defined in Ouroboros.Network.PeerSelection.PublicRootPeers

Methods

(<>) :: PublicRootPeers (ExtraPeers peeraddr) peeraddr -> PublicRootPeers (ExtraPeers peeraddr) peeraddr -> PublicRootPeers (ExtraPeers peeraddr) peeraddr #

sconcat :: NonEmpty (PublicRootPeers (ExtraPeers peeraddr) peeraddr) -> PublicRootPeers (ExtraPeers peeraddr) peeraddr #

stimes :: Integral b => b -> PublicRootPeers (ExtraPeers peeraddr) peeraddr -> PublicRootPeers (ExtraPeers peeraddr) peeraddr #

(Show peeraddr, Show extraPeers) => Show (PublicRootPeers extraPeers peeraddr) Source # 
Instance details

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 # 
Instance details

Defined in Ouroboros.Network.PeerSelection.PublicRootPeers

Methods

(==) :: PublicRootPeers extraPeers peeraddr -> PublicRootPeers extraPeers peeraddr -> Bool #

(/=) :: PublicRootPeers extraPeers peeraddr -> PublicRootPeers extraPeers peeraddr -> Bool #

invariant :: Ord peeraddr => (extraPeers -> Bool) -> (extraPeers -> Set peeraddr) -> PublicRootPeers extraPeers peeraddr -> Bool Source #

Polymorphic operations

member :: Ord peeraddr => peeraddr -> (peeraddr -> extraPeers -> Bool) -> PublicRootPeers extraPeers peeraddr -> Bool Source #

empty :: extraPeers -> PublicRootPeers extraPeers peeraddr Source #

null :: (extraPeers -> Bool) -> PublicRootPeers extraPeers peeraddr -> Bool Source #

size :: (extraPeers -> Int) -> PublicRootPeers extraPeers peeraddr -> Int Source #

toAllLedgerPeerSet :: Ord peeraddr => PublicRootPeers extraPeers peeraddr -> Set peeraddr Source #

fromLedgerPeers :: Monoid extraPeers => Set peeraddr -> PublicRootPeers extraPeers peeraddr Source #

fromBigLedgerPeers :: Monoid extraPeers => Set peeraddr -> PublicRootPeers extraPeers peeraddr Source #

toSet :: Ord peeraddr => (extraPeers -> Set peeraddr) -> PublicRootPeers extraPeers peeraddr -> Set peeraddr Source #

difference :: Ord peeraddr => (extraPeers -> Set peeraddr -> extraPeers) -> PublicRootPeers extraPeers peeraddr -> Set peeraddr -> PublicRootPeers extraPeers peeraddr Source #

intersection :: Ord peeraddr => (extraPeers -> Set peeraddr -> extraPeers) -> PublicRootPeers extraPeers peeraddr -> Set peeraddr -> PublicRootPeers extraPeers peeraddr Source #

fromDisjointSets Source #

Arguments

:: Ord peeraddr 
=> (extraPeers -> Set peeraddr) 
-> extraPeers 
-> Set peeraddr

ledger peers

-> Set peeraddr

big ledger peers

-> PublicRootPeers extraPeers peeraddr 

mergeG :: (Ord peeraddr, Semigroup extraPeers) => (extraPeers -> Set peeraddr) -> PublicRootPeers extraPeers peeraddr -> PublicRootPeers extraPeers peeraddr -> PublicRootPeers extraPeers peeraddr Source #

Cardano Node specific operations

merge :: Ord peeraddr => PublicRootPeers (ExtraPeers peeraddr) peeraddr -> PublicRootPeers (ExtraPeers peeraddr) peeraddr -> PublicRootPeers (ExtraPeers peeraddr) peeraddr Source #

getBootstrapPeers :: PublicRootPeers (ExtraPeers peeraddr) peeraddr -> Set peeraddr Source #

toPublicConfigPeerSet :: PublicRootPeers (ExtraPeers peeraddr) peeraddr -> Set peeraddr Source #

insertPublicConfigPeer :: Ord peeraddr => peeraddr -> PeerAdvertise -> PublicRootPeers (ExtraPeers peeraddr) peeraddr -> PublicRootPeers (ExtraPeers peeraddr) peeraddr Source #

insertBootstrapPeer :: Ord peeraddr => peeraddr -> PublicRootPeers (ExtraPeers peeraddr) peeraddr -> PublicRootPeers (ExtraPeers peeraddr) peeraddr Source #

insertLedgerPeer :: Ord peeraddr => peeraddr -> PublicRootPeers (ExtraPeers peeraddr) peeraddr -> PublicRootPeers (ExtraPeers peeraddr) peeraddr Source #

insertBigLedgerPeer :: Ord peeraddr => peeraddr -> PublicRootPeers (ExtraPeers peeraddr) peeraddr -> PublicRootPeers (ExtraPeers peeraddr) peeraddr Source #

fromBootstrapPeers :: Set peeraddr -> PublicRootPeers (ExtraPeers peeraddr) peeraddr Source #

fromMapAndSet Source #

Arguments

:: Ord peeraddr 
=> Map peeraddr PeerAdvertise

public configured root peers

-> Set peeraddr

bootstrap peers

-> Set peeraddr

ledger peers

-> Set peeraddr

big ledger peers

-> PublicRootPeers (ExtraPeers peeraddr) peeraddr 

Preserves PublicRootPeers invariant. If the two sets are not disjoint, removes the common ones from the bootstrap peers set since its the most sensitive set.