Safe Haskell | None |
---|---|
Language | Haskell2010 |
Ouroboros.Network.PeerSelection.RootPeersDNS
Synopsis
- data DNSActions resolver exception m = DNSActions {
- dnsResolverResource ∷ ResolvConf → m (Resource m (DNSorIOError exception) resolver)
- dnsAsyncResolverResource ∷ ResolvConf → m (Resource m (DNSorIOError exception) resolver)
- dnsLookupWithTTL ∷ ResolvConf → resolver → Domain → m ([DNSError], [(IP, TTL)])
- constantResource ∷ Applicative m ⇒ a → Resource m err a
- ioDNSActions ∷ LookupReqs → DNSActions Resolver IOException IO
- data LookupReqs
- localRootPeersProvider ∷ ∀ m peerAddr resolver exception. (MonadAsync m, MonadDelay m, Eq (Async m Void), Ord peerAddr) ⇒ Tracer m (TraceLocalRootPeers peerAddr exception) → (IP → PortNumber → peerAddr) → ResolvConf → DNSActions resolver exception m → STM m [(Int, Map RelayAccessPoint PeerAdvertise)] → StrictTVar m (Seq (Int, Map peerAddr PeerAdvertise)) → m Void
- data DomainAccessPoint = DomainAccessPoint {}
- data RelayAccessPoint where
- data IP
- data TraceLocalRootPeers peerAddr exception
- = TraceLocalRootDomains [(Int, Map RelayAccessPoint PeerAdvertise)]
- | TraceLocalRootWaiting DomainAccessPoint DiffTime
- | TraceLocalRootResult DomainAccessPoint [(IP, TTL)]
- | TraceLocalRootGroups (Seq (Int, Map peerAddr PeerAdvertise))
- | TraceLocalRootFailure DomainAccessPoint (DNSorIOError exception)
- | TraceLocalRootError DomainAccessPoint SomeException
- publicRootPeersProvider ∷ ∀ peerAddr resolver exception a m. (MonadThrow m, MonadAsync m, Exception exception, Ord peerAddr) ⇒ Tracer m TracePublicRootPeers → (IP → PortNumber → peerAddr) → ResolvConf → STM m [RelayAccessPoint] → DNSActions resolver exception m → ((Int → m (Set peerAddr, DiffTime)) → m a) → m a
- data TracePublicRootPeers
- resolveDomainAccessPoint ∷ ∀ exception resolver m. (MonadThrow m, MonadAsync m, Exception exception) ⇒ Tracer m TracePublicRootPeers → ResolvConf → DNSActions resolver exception m → [DomainAccessPoint] → m (Map DomainAccessPoint (Set SockAddr))
- data ResolvConf
- type Domain = ByteString
- type TTL = Word32
- data PortNumber
DNS based actions for local and public root providers
data DNSActions resolver exception m Source #
Dictionary of DNS actions vocabulary
Constructors
DNSActions | |
Fields
|
DNS resolver IO auxiliar functions
constantResource ∷ Applicative m ⇒ a → Resource m err a Source #
DNSActions IO
ioDNSActions ∷ LookupReqs → DNSActions Resolver IOException IO Source #
Bundle of DNS Actions that runs in IO 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.
data LookupReqs Source #
Constructors
LookupReqAOnly | |
LookupReqAAAAOnly | |
LookupReqAAndAAAA |
Instances
DNS based provider for local root peers
localRootPeersProvider Source #
Arguments
∷ ∀ m peerAddr resolver exception. (MonadAsync m, MonadDelay m, Eq (Async m Void), Ord peerAddr) | |
⇒ Tracer m (TraceLocalRootPeers peerAddr exception) | |
→ (IP → PortNumber → peerAddr) | |
→ ResolvConf | |
→ DNSActions resolver exception m | |
→ STM m [(Int, Map RelayAccessPoint PeerAdvertise)] | input |
→ StrictTVar m (Seq (Int, Map peerAddr PeerAdvertise)) | 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 DomainAccessPoint Source #
A product of a Domain
and PortNumber
. After resolving the
domain we will use the PortNumber
to form SockAddr
.
Constructors
DomainAccessPoint | |
Fields |
Instances
data RelayAccessPoint Source #
A relay can have either an IP address and a port number or a domain with a port number
Constructors
RelayAccessDomain !Domain !PortNumber | |
RelayAccessAddress !IP !PortNumber |
Bundled Patterns
pattern RelayDomainAccessPoint ∷ DomainAccessPoint → RelayAccessPoint |
|
Instances
Instances
Enum IP | |
Eq IP | |
Data IP | |
Defined in Data.IP.Addr Methods gfoldl ∷ (∀ d b. Data d ⇒ c (d → b) → d → c b) → (∀ g. g → c g) → IP → c IP Source # gunfold ∷ (∀ b r. Data b ⇒ c (b → r) → c r) → (∀ r. r → c r) → Constr → c IP Source # toConstr ∷ IP → Constr Source # dataTypeOf ∷ IP → DataType Source # dataCast1 ∷ Typeable t ⇒ (∀ d. Data d ⇒ c (t d)) → Maybe (c IP) Source # dataCast2 ∷ Typeable t ⇒ (∀ d e. (Data d, Data e) ⇒ c (t d e)) → Maybe (c IP) Source # gmapT ∷ (∀ b. Data b ⇒ b → b) → IP → IP Source # gmapQl ∷ (r → r' → r) → r → (∀ d. Data d ⇒ d → r') → IP → r Source # gmapQr ∷ ∀ r r'. (r' → r → r) → r → (∀ d. Data d ⇒ d → r') → IP → r Source # gmapQ ∷ (∀ d. Data d ⇒ d → u) → IP → [u] Source # gmapQi ∷ Int → (∀ d. Data d ⇒ d → u) → IP → u Source # gmapM ∷ Monad m ⇒ (∀ d. Data d ⇒ d → m d) → IP → m IP Source # gmapMp ∷ MonadPlus m ⇒ (∀ d. Data d ⇒ d → m d) → IP → m IP Source # gmapMo ∷ MonadPlus m ⇒ (∀ d. Data d ⇒ d → m d) → IP → m IP Source # | |
Ord IP | |
Read IP | |
Show IP | |
IsString IP | |
Defined in Data.IP.Addr Methods fromString ∷ String → IP Source # | |
Generic IP | |
type Rep IP | |
Defined in Data.IP.Addr type Rep IP = D1 ('MetaData "IP" "Data.IP.Addr" "iproute-1.7.12-05e1c06e95ad98d75f6a9a33f0ea4ecd286d5acebf9a6bc4c84febea70fead77" '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 TraceLocalRootPeers peerAddr exception Source #
Constructors
TraceLocalRootDomains [(Int, Map RelayAccessPoint PeerAdvertise)] |
|
TraceLocalRootWaiting DomainAccessPoint DiffTime | |
TraceLocalRootResult DomainAccessPoint [(IP, TTL)] | |
TraceLocalRootGroups (Seq (Int, Map peerAddr PeerAdvertise)) | This traces the results of the local root peer provider |
TraceLocalRootFailure DomainAccessPoint (DNSorIOError exception) | |
TraceLocalRootError DomainAccessPoint SomeException |
Instances
(Show peerAddr, Show exception) ⇒ Show (TraceLocalRootPeers peerAddr exception) Source # | |
Defined in Ouroboros.Network.PeerSelection.RootPeersDNS |
DNS based provider for public root peers
publicRootPeersProvider ∷ ∀ peerAddr resolver exception a m. (MonadThrow m, MonadAsync m, Exception exception, Ord peerAddr) ⇒ Tracer m TracePublicRootPeers → (IP → PortNumber → peerAddr) → ResolvConf → STM m [RelayAccessPoint] → DNSActions resolver exception m → ((Int → m (Set peerAddr, DiffTime)) → m a) → m a Source #
TODO track PeerAdvertise
data TracePublicRootPeers Source #
Constructors
TracePublicRootRelayAccessPoint [RelayAccessPoint] | |
TracePublicRootDomains [DomainAccessPoint] | |
TracePublicRootResult Domain [(IP, TTL)] | |
TracePublicRootFailure Domain DNSError |
Instances
resolveDomainAccessPoint ∷ ∀ exception resolver m. (MonadThrow m, MonadAsync m, Exception exception) ⇒ Tracer m TracePublicRootPeers → ResolvConf → DNSActions resolver exception m → [DomainAccessPoint] → m (Map DomainAccessPoint (Set SockAddr)) Source #
Provides DNS resolution functionality.
DNS type re-exports
data ResolvConf #
Instances
Show ResolvConf | |
Defined in Network.DNS.Types.Internal |
type Domain = ByteString #
Socket type re-exports
data PortNumber #