| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Ouroboros.Network.PeerSelection.LedgerPeers
Synopsis
- data IP
- data LedgerPeers
- getLedgerPeers :: forall (m :: Type -> Type) extraAPI. MonadSTM m => SRVPrefix -> LedgerPeersConsensusInterface extraAPI m -> AfterSlot -> STM m LedgerPeers
- data RelayAccessPoint
- newtype PoolStake = PoolStake {}
- newtype AccPoolStake = AccPoolStake {}
- 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
- newtype NumberOfPeers = NumberOfPeers {}
- data LedgerPeersKind
- data StakeMapOverSource = StakeMapOverSource {
- ledgerWithOrigin :: WithOrigin SlotNo
- ledgerPeers :: LedgerPeers
- peerSnapshot :: Maybe LedgerPeerSnapshot
- cachedSlot :: Maybe SlotNo
- peerMap :: Map AccPoolStake (PoolStake, NonEmpty RelayAccessPoint)
- bigPeerMap :: Map AccPoolStake (PoolStake, NonEmpty RelayAccessPoint)
- useLedgerAfter :: AfterSlot
- srvPrefix :: SRVPrefix
- accPoolStake :: [(PoolStake, NonEmpty relayAccessPoint)] -> Map AccPoolStake (PoolStake, NonEmpty relayAccessPoint)
- accumulateBigLedgerStake :: [(PoolStake, NonEmpty relayAccessPoint)] -> [(AccPoolStake, (PoolStake, NonEmpty relayAccessPoint))]
- accBigPoolStakeMap :: [(PoolStake, NonEmpty relayAccessPoint)] -> Map AccPoolStake (PoolStake, NonEmpty relayAccessPoint)
- bigLedgerPeerQuota :: AccPoolStake
- stakeMapWithSlotOverSource :: StakeMapOverSource -> (Map AccPoolStake (PoolStake, NonEmpty RelayAccessPoint), Map AccPoolStake (PoolStake, NonEmpty RelayAccessPoint), Maybe SlotNo)
- 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 AfterSlot
- data UseLedgerPeers
- data RelayAccessPoint
- type SRVPrefix = Domain
- 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 PoolStake = PoolStake {}
- compareLedgerPeerSnapshotApproximate :: [(AccPoolStake, (PoolStake, NonEmpty RelayAccessPoint))] -> [(AccPoolStake, (PoolStake, NonEmpty RelayAccessPoint))] -> Bool
- getRelayAccessPointsFromLedger :: forall (m :: Type -> Type) extraAPI. MonadSTM m => SRVPrefix -> LedgerPeersConsensusInterface extraAPI m -> STM m [(PoolStake, NonEmpty RelayAccessPoint)]
- getRelayAccessPointsFromLedgerPeerSnapshot :: SRVPrefix -> LedgerPeerSnapshot -> (WithOrigin SlotNo, [(AccPoolStake, (PoolStake, NonEmpty RelayAccessPoint))])
- newtype AccPoolStake = AccPoolStake {}
- data LedgerRelayAccessPoint
- prefixLedgerRelayAccessPoint :: SRVPrefix -> LedgerRelayAccessPoint -> RelayAccessPoint
- data IsLedgerPeer
- data LedgerPeerSnapshotSRVSupport
- decodeLedgerPeerSnapshot :: LedgerPeerSnapshotSRVSupport -> Decoder s LedgerPeerSnapshot
- encodeLedgerPeerSnapshot :: LedgerPeerSnapshotSRVSupport -> LedgerPeerSnapshot -> Encoding
- isLedgerPeersEnabled :: UseLedgerPeers -> Bool
- mapExtraAPI :: forall a b (m :: Type -> Type). (a -> b) -> LedgerPeersConsensusInterface a m -> LedgerPeersConsensusInterface b m
- 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))
Documentation
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 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 | |
getLedgerPeers :: forall (m :: Type -> Type) extraAPI. MonadSTM m => SRVPrefix -> LedgerPeersConsensusInterface extraAPI m -> AfterSlot -> STM m LedgerPeers Source #
Internal API to deal with UseLedgerAfter configuration
option
Receiving the LedgerPeersConsensusInterface we are able to compute a
function that given a SlotNo will give us LedgerPeers according to the
following invariants:
BeforeSlotis returned iff the latest slot is before theslotNo;- 'LedgerPeers lsj peers' is returned iff the latest slot is after the
slotNo.
data RelayAccessPoint #
Constructors
| RelayAccessDomain !Domain !PortNumber | |
| RelayAccessSRVDomain !Domain | |
| RelayAccessAddress !IP !PortNumber |
Instances
Constructors
| PoolStake | |
Fields | |
Instances
| NFData PoolStake | |
| Num PoolStake | |
| Fractional PoolStake | |
| Show PoolStake | |
| Eq PoolStake | |
| Ord PoolStake | |
newtype AccPoolStake #
Constructors
| AccPoolStake | |
Fields | |
Instances
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 # | |
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 # | |
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 StakeMapOverSource Source #
Arguments record to stakeMapWithSlotOverSource function
Constructors
Instances
| Show StakeMapOverSource Source # | |
Defined in Ouroboros.Network.PeerSelection.LedgerPeers Methods showsPrec :: Int -> StakeMapOverSource -> ShowS # show :: StakeMapOverSource -> String # showList :: [StakeMapOverSource] -> ShowS # | |
Ledger Peers specific functions
accPoolStake :: [(PoolStake, NonEmpty relayAccessPoint)] -> Map AccPoolStake (PoolStake, NonEmpty relayAccessPoint) Source #
Convert a list of pools with stake to a Map keyed on the accumulated stake.
Consensus provides a list of pairs of relative stake and corresponding relays for all usable
registered pools.
By creating a Map keyed on the AccPoolStake that is the sum of the pool's relative stake and
the stake of all preceding pools we can support weighted random selection in
O(log n) time by taking advantage of Map.lookupGE (returns the smallest key greater or equal
to the provided value).
accumulateBigLedgerStake :: [(PoolStake, NonEmpty relayAccessPoint)] -> [(AccPoolStake, (PoolStake, NonEmpty relayAccessPoint))] #
accBigPoolStakeMap :: [(PoolStake, NonEmpty relayAccessPoint)] -> Map AccPoolStake (PoolStake, NonEmpty relayAccessPoint) Source #
Take the result of accBigPoolStake and turn it into
stakeMapWithSlotOverSource :: StakeMapOverSource -> (Map AccPoolStake (PoolStake, NonEmpty RelayAccessPoint), Map AccPoolStake (PoolStake, NonEmpty RelayAccessPoint), Maybe SlotNo) Source #
Build up a stake map to sample ledger peers from. The SlotNo, if different from 0, indicates that the maps are the stake pools from the snapshot taken from the particular slot number.
DNS based provider for ledger root peers
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.
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 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 # | |
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 # | |
Constructors
| PoolStake | |
Fields | |
Instances
| NFData PoolStake | |
| Num PoolStake | |
| Fractional PoolStake | |
| Show PoolStake | |
| Eq PoolStake | |
| Ord PoolStake | |
compareLedgerPeerSnapshotApproximate :: [(AccPoolStake, (PoolStake, NonEmpty RelayAccessPoint))] -> [(AccPoolStake, (PoolStake, NonEmpty RelayAccessPoint))] -> Bool #
getRelayAccessPointsFromLedger :: forall (m :: Type -> Type) extraAPI. MonadSTM m => SRVPrefix -> LedgerPeersConsensusInterface extraAPI m -> STM m [(PoolStake, NonEmpty RelayAccessPoint)] #
getRelayAccessPointsFromLedgerPeerSnapshot :: SRVPrefix -> LedgerPeerSnapshot -> (WithOrigin SlotNo, [(AccPoolStake, (PoolStake, NonEmpty RelayAccessPoint))]) #
newtype AccPoolStake #
Constructors
| AccPoolStake | |
Fields | |
Instances
| Num AccPoolStake | |
Defined in Ouroboros.Network.PeerSelection.LedgerPeers.Type Methods (+) :: AccPoolStake -> AccPoolStake -> AccPoolStake # (-) :: AccPoolStake -> AccPoolStake -> AccPoolStake # (*) :: AccPoolStake -> AccPoolStake -> AccPoolStake # negate :: AccPoolStake -> AccPoolStake # abs :: AccPoolStake -> AccPoolStake # signum :: AccPoolStake -> AccPoolStake # fromInteger :: Integer -> AccPoolStake # | |
| Fractional AccPoolStake | |
Defined in Ouroboros.Network.PeerSelection.LedgerPeers.Type Methods (/) :: AccPoolStake -> AccPoolStake -> AccPoolStake # recip :: AccPoolStake -> AccPoolStake # fromRational :: Rational -> AccPoolStake # | |
| Show AccPoolStake | |
Defined in Ouroboros.Network.PeerSelection.LedgerPeers.Type Methods showsPrec :: Int -> AccPoolStake -> ShowS # show :: AccPoolStake -> String # showList :: [AccPoolStake] -> ShowS # | |
| Eq AccPoolStake | |
| Ord AccPoolStake | |
Defined in Ouroboros.Network.PeerSelection.LedgerPeers.Type Methods compare :: AccPoolStake -> AccPoolStake -> Ordering # (<) :: AccPoolStake -> AccPoolStake -> Bool # (<=) :: AccPoolStake -> AccPoolStake -> Bool # (>) :: AccPoolStake -> AccPoolStake -> Bool # (>=) :: AccPoolStake -> AccPoolStake -> Bool # max :: AccPoolStake -> AccPoolStake -> AccPoolStake # min :: AccPoolStake -> AccPoolStake -> AccPoolStake # | |
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 # | |
data IsLedgerPeer #
Constructors
| IsLedgerPeer | |
| IsNotLedgerPeer |
Instances
| Show IsLedgerPeer | |
Defined in Ouroboros.Network.PeerSelection.LedgerPeers.Type Methods showsPrec :: Int -> IsLedgerPeer -> ShowS # show :: IsLedgerPeer -> String # showList :: [IsLedgerPeer] -> ShowS # | |
| Eq IsLedgerPeer | |
data LedgerPeerSnapshotSRVSupport #
Instances
| Show LedgerPeerSnapshotSRVSupport | |
Defined in Ouroboros.Network.PeerSelection.LedgerPeers.Type Methods showsPrec :: Int -> LedgerPeerSnapshotSRVSupport -> ShowS # show :: LedgerPeerSnapshotSRVSupport -> String # showList :: [LedgerPeerSnapshotSRVSupport] -> ShowS # | |
| Eq LedgerPeerSnapshotSRVSupport | |
Defined in Ouroboros.Network.PeerSelection.LedgerPeers.Type Methods (==) :: LedgerPeerSnapshotSRVSupport -> LedgerPeerSnapshotSRVSupport -> Bool # (/=) :: LedgerPeerSnapshotSRVSupport -> LedgerPeerSnapshotSRVSupport -> Bool # | |
mapExtraAPI :: forall a b (m :: Type -> Type). (a -> b) -> LedgerPeersConsensusInterface a m -> LedgerPeersConsensusInterface b m #
Internal only exported for testing purposes
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.