Safe Haskell | None |
---|---|
Language | Haskell2010 |
Ouroboros.Network.PeerSelection.PublicRootPeers
Synopsis
- data PublicRootPeers extraPeers peeraddr = PublicRootPeers {
- getLedgerPeers :: !(Set peeraddr)
- getBigLedgerPeers :: !(Set peeraddr)
- getExtraPeers :: !extraPeers
- invariant :: Ord peeraddr => (extraPeers -> Bool) -> (extraPeers -> Set peeraddr) -> PublicRootPeers extraPeers peeraddr -> Bool
- member :: Ord peeraddr => peeraddr -> (peeraddr -> extraPeers -> Bool) -> PublicRootPeers extraPeers peeraddr -> Bool
- empty :: extraPeers -> PublicRootPeers extraPeers peeraddr
- null :: (extraPeers -> Bool) -> PublicRootPeers extraPeers peeraddr -> Bool
- size :: (extraPeers -> Int) -> PublicRootPeers extraPeers peeraddr -> Int
- toAllLedgerPeerSet :: Ord peeraddr => PublicRootPeers extraPeers peeraddr -> Set peeraddr
- fromLedgerPeers :: Monoid extraPeers => Set peeraddr -> PublicRootPeers extraPeers peeraddr
- fromBigLedgerPeers :: Monoid extraPeers => Set peeraddr -> PublicRootPeers extraPeers peeraddr
- toSet :: Ord peeraddr => (extraPeers -> Set peeraddr) -> PublicRootPeers extraPeers peeraddr -> Set peeraddr
- difference :: Ord peeraddr => (extraPeers -> Set peeraddr -> extraPeers) -> PublicRootPeers extraPeers peeraddr -> Set peeraddr -> PublicRootPeers extraPeers peeraddr
- intersection :: Ord peeraddr => (extraPeers -> Set peeraddr -> extraPeers) -> PublicRootPeers extraPeers peeraddr -> Set peeraddr -> PublicRootPeers extraPeers peeraddr
- fromDisjointSets :: Ord peeraddr => (extraPeers -> Set peeraddr) -> extraPeers -> Set peeraddr -> Set peeraddr -> PublicRootPeers extraPeers peeraddr
- mergeG :: (Ord peeraddr, Semigroup extraPeers) => (extraPeers -> Set peeraddr) -> PublicRootPeers extraPeers peeraddr -> PublicRootPeers extraPeers peeraddr -> PublicRootPeers extraPeers peeraddr
- merge :: Ord peeraddr => PublicRootPeers (ExtraPeers peeraddr) peeraddr -> PublicRootPeers (ExtraPeers peeraddr) peeraddr -> PublicRootPeers (ExtraPeers peeraddr) peeraddr
- getPublicConfigPeers :: PublicRootPeers (ExtraPeers peeraddr) peeraddr -> Map peeraddr PeerAdvertise
- getBootstrapPeers :: PublicRootPeers (ExtraPeers peeraddr) peeraddr -> Set peeraddr
- toPublicConfigPeerSet :: PublicRootPeers (ExtraPeers peeraddr) peeraddr -> Set peeraddr
- insertPublicConfigPeer :: Ord peeraddr => peeraddr -> PeerAdvertise -> PublicRootPeers (ExtraPeers peeraddr) peeraddr -> PublicRootPeers (ExtraPeers peeraddr) peeraddr
- insertBootstrapPeer :: Ord peeraddr => peeraddr -> PublicRootPeers (ExtraPeers peeraddr) peeraddr -> PublicRootPeers (ExtraPeers peeraddr) peeraddr
- insertLedgerPeer :: Ord peeraddr => peeraddr -> PublicRootPeers (ExtraPeers peeraddr) peeraddr -> PublicRootPeers (ExtraPeers peeraddr) peeraddr
- insertBigLedgerPeer :: Ord peeraddr => peeraddr -> PublicRootPeers (ExtraPeers peeraddr) peeraddr -> PublicRootPeers (ExtraPeers peeraddr) peeraddr
- fromPublicRootPeers :: Map peeraddr PeerAdvertise -> PublicRootPeers (ExtraPeers peeraddr) peeraddr
- fromBootstrapPeers :: Set peeraddr -> PublicRootPeers (ExtraPeers peeraddr) peeraddr
- fromMapAndSet :: Ord peeraddr => Map peeraddr PeerAdvertise -> Set peeraddr -> Set peeraddr -> Set peeraddr -> PublicRootPeers (ExtraPeers peeraddr) peeraddr
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
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 #
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 #
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 #
getPublicConfigPeers :: PublicRootPeers (ExtraPeers peeraddr) peeraddr -> Map peeraddr PeerAdvertise 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 #
fromPublicRootPeers :: Map peeraddr PeerAdvertise -> PublicRootPeers (ExtraPeers peeraddr) peeraddr Source #
fromBootstrapPeers :: Set peeraddr -> PublicRootPeers (ExtraPeers peeraddr) peeraddr 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.