Safe Haskell | None |
---|---|
Language | Haskell2010 |
Test.Ouroboros.Network.Diffusion.Node
Synopsis
- data Interfaces extraAPI (m :: Type -> Type) = Interfaces {
- iNtnSnocket :: Snocket m (NtNFD m) NtNAddr
- iNtnBearer :: MakeBearer m (NtNFD m)
- iAcceptVersion :: NtNVersionData -> NtNVersionData -> Accept NtNVersionData
- iNtnDomainResolver :: DNSLookupType -> [DomainAccessPoint] -> m (Map DomainAccessPoint (Set NtNAddr))
- iNtcSnocket :: Snocket m (NtCFD m) NtCAddr
- iNtcBearer :: MakeBearer m (NtCFD m)
- iRng :: StdGen
- iDomainMap :: StrictTVar m (Map Domain [(IP, TTL)])
- iLedgerPeersConsensusInterface :: LedgerPeersConsensusInterface extraAPI m
- iConnStateIdSupply :: ConnStateIdSupply m
- data Arguments extraChurnArgs extraFlags (m :: Type -> Type) = Arguments {
- aIPAddress :: NtNAddr
- aAcceptedLimits :: AcceptedConnectionsLimit
- aDiffusionMode :: DiffusionMode
- aKeepAliveInterval :: DiffTime
- aPingPongInterval :: DiffTime
- aShouldChainSyncExit :: BlockHeader -> m Bool
- aChainSyncEarlyExit :: Bool
- aPeerTargets :: PeerSelectionTargets
- aReadLocalRootPeers :: STM m [(HotValency, WarmValency, Map RelayAccessPoint (LocalRootConfig extraFlags))]
- aReadPublicRootPeers :: STM m (Map RelayAccessPoint PeerAdvertise)
- aOwnPeerSharing :: PeerSharing
- aReadUseLedgerPeers :: STM m UseLedgerPeers
- aProtocolIdleTimeout :: DiffTime
- aTimeWaitTimeout :: DiffTime
- aDNSTimeoutScript :: Script DNSTimeout
- aDNSLookupDelayScript :: Script DNSLookupDelay
- aDebugTracer :: Tracer m String
- aExtraChurnArgs :: extraChurnArgs
- run :: forall extraState extraDebugState extraAPI extraPeers extraFlags extraChurnArgs extraCounters exception resolver resolverError m. (Alternative (STM m), MonadAsync m, MonadDelay m, MonadEvaluate m, MonadFix m, MonadFork m, MonadLabelledSTM m, MonadTraceSTM m, MonadMask m, MonadSay m, MonadST m, MonadTime m, MonadTimer m, MonadThrow (STM m), MonadMVar m, Eq extraFlags, Eq extraCounters, Monoid extraPeers, Exception exception, resolver ~ (), resolverError ~ ResolverException, forall a. Semigroup a => Semigroup (m a)) => BlockGeneratorArgs Block StdGen -> LimitsAndTimeouts BlockHeader Block -> Interfaces extraAPI m -> Arguments extraChurnArgs extraFlags m -> extraState -> extraCounters -> PublicExtraPeersAPI extraPeers NtNAddr -> (forall (muxMode :: Mode) responderCtx ntnVersionData bytes a b. PeerSelectionGovernorArgs extraState extraDebugState extraFlags extraPeers extraAPI extraCounters NtNAddr (PeerConnectionHandle muxMode responderCtx NtNAddr ntnVersionData bytes m a b) exception m) -> (forall (muxMode :: Mode) responderCtx ntnVersionData bytes a b. PeerSelectionState extraState extraFlags extraPeers NtNAddr (PeerConnectionHandle muxMode responderCtx NtNAddr ntnVersionData bytes m a b) -> extraCounters) -> (Map NtNAddr PeerAdvertise -> extraPeers) -> (PeerActionsDNS NtNAddr resolver resolverError m -> DNSSemaphore m -> (Map NtNAddr PeerAdvertise -> extraPeers) -> (NumberOfPeers -> LedgerPeersKind -> m (Maybe (Set NtNAddr, DiffTime))) -> LedgerPeersKind -> Int -> m (PublicRootPeers extraPeers NtNAddr, DiffTime)) -> (PeerChurnArgs m extraChurnArgs extraDebugState extraFlags extraPeers extraAPI extraCounters NtNAddr -> m Void) -> Tracers NtNAddr NtNVersion NtNVersionData NtCAddr NtCVersion NtCVersionData ResolverException extraState extraDebugState extraFlags extraPeers extraCounters m -> Tracer m (TraceLabelPeer NtNAddr (TraceFetchClientState BlockHeader)) -> m Void
- type NtNAddr = TestAddress NtNAddr_
- type NtNFD (m :: Type -> Type) = FD m NtNAddr
- type NtNVersion = UnversionedProtocol
- data NtNVersionData
- type NtCAddr = TestAddress Int
- type NtCFD (m :: Type -> Type) = FD m NtCAddr
- type NtCVersion = UnversionedProtocol
- type NtCVersionData = UnversionedProtocolData
- data NtNAddr_
- data AcceptedConnectionsLimit = AcceptedConnectionsLimit {}
- data DiffusionMode
- data PeerAdvertise
- data PeerSelectionTargets = PeerSelectionTargets {}
- config_REPROMOTE_DELAY :: RepromoteDelay
- data BlockGeneratorArgs block s = BlockGeneratorArgs {
- bgaSlotDuration :: DiffTime
- bgaBlockGenerator :: s -> Anchor block -> SlotNo -> (Maybe block, s)
- bgaSeed :: s
- data LimitsAndTimeouts header block = LimitsAndTimeouts {
- chainSyncLimits :: MiniProtocolLimits
- chainSyncSizeLimits :: ProtocolSizeLimits (ChainSync header (Point block) (Tip block)) ByteString
- chainSyncTimeLimits :: ProtocolTimeLimits (ChainSync header (Point block) (Tip block))
- blockFetchLimits :: MiniProtocolLimits
- blockFetchSizeLimits :: ProtocolSizeLimits (BlockFetch block (Point block)) ByteString
- blockFetchTimeLimits :: ProtocolTimeLimits (BlockFetch block (Point block))
- keepAliveLimits :: MiniProtocolLimits
- keepAliveSizeLimits :: ProtocolSizeLimits KeepAlive ByteString
- keepAliveTimeLimits :: ProtocolTimeLimits KeepAlive
- pingPongLimits :: MiniProtocolLimits
- pingPongSizeLimits :: ProtocolSizeLimits PingPong ByteString
- pingPongTimeLimits :: ProtocolTimeLimits PingPong
- handshakeLimits :: MiniProtocolLimits
- handshakeTimeLimits :: ProtocolTimeLimits (Handshake NtNVersion NtNVersionData)
- handhsakeSizeLimits :: ProtocolSizeLimits (Handshake NtNVersion NtNVersionData) ByteString
- peerSharingLimits :: MiniProtocolLimits
- peerSharingTimeLimits :: ProtocolTimeLimits (PeerSharing NtNAddr)
- peerSharingSizeLimits :: ProtocolSizeLimits (PeerSharing NtNAddr) ByteString
- randomBlockGenerationArgs :: DiffTime -> StdGen -> Int -> BlockGeneratorArgs Block StdGen
- ntnAddrToRelayAccessPoint :: NtNAddr -> Maybe RelayAccessPoint
run a node
data Interfaces extraAPI (m :: Type -> Type) Source #
Constructors
Interfaces | |
Fields
|
data Arguments extraChurnArgs extraFlags (m :: Type -> Type) Source #
Constructors
Arguments | |
Fields
|
run :: forall extraState extraDebugState extraAPI extraPeers extraFlags extraChurnArgs extraCounters exception resolver resolverError m. (Alternative (STM m), MonadAsync m, MonadDelay m, MonadEvaluate m, MonadFix m, MonadFork m, MonadLabelledSTM m, MonadTraceSTM m, MonadMask m, MonadSay m, MonadST m, MonadTime m, MonadTimer m, MonadThrow (STM m), MonadMVar m, Eq extraFlags, Eq extraCounters, Monoid extraPeers, Exception exception, resolver ~ (), resolverError ~ ResolverException, forall a. Semigroup a => Semigroup (m a)) => BlockGeneratorArgs Block StdGen -> LimitsAndTimeouts BlockHeader Block -> Interfaces extraAPI m -> Arguments extraChurnArgs extraFlags m -> extraState -> extraCounters -> PublicExtraPeersAPI extraPeers NtNAddr -> (forall (muxMode :: Mode) responderCtx ntnVersionData bytes a b. PeerSelectionGovernorArgs extraState extraDebugState extraFlags extraPeers extraAPI extraCounters NtNAddr (PeerConnectionHandle muxMode responderCtx NtNAddr ntnVersionData bytes m a b) exception m) -> (forall (muxMode :: Mode) responderCtx ntnVersionData bytes a b. PeerSelectionState extraState extraFlags extraPeers NtNAddr (PeerConnectionHandle muxMode responderCtx NtNAddr ntnVersionData bytes m a b) -> extraCounters) -> (Map NtNAddr PeerAdvertise -> extraPeers) -> (PeerActionsDNS NtNAddr resolver resolverError m -> DNSSemaphore m -> (Map NtNAddr PeerAdvertise -> extraPeers) -> (NumberOfPeers -> LedgerPeersKind -> m (Maybe (Set NtNAddr, DiffTime))) -> LedgerPeersKind -> Int -> m (PublicRootPeers extraPeers NtNAddr, DiffTime)) -> (PeerChurnArgs m extraChurnArgs extraDebugState extraFlags extraPeers extraAPI extraCounters NtNAddr -> m Void) -> Tracers NtNAddr NtNVersion NtNVersionData NtCAddr NtCVersion NtCVersionData ResolverException extraState extraDebugState extraFlags extraPeers extraCounters m -> Tracer m (TraceLabelPeer NtNAddr (TraceFetchClientState BlockHeader)) -> m Void Source #
node types
type NtNAddr = TestAddress NtNAddr_ Source #
type NtNVersion = UnversionedProtocol Source #
data NtNVersionData Source #
Instances
Show NtNVersionData Source # | |
Defined in Test.Ouroboros.Network.Diffusion.Node.Kernel Methods showsPrec :: Int -> NtNVersionData -> ShowS # show :: NtNVersionData -> String # showList :: [NtNVersionData] -> ShowS # | |
Acceptable NtNVersionData Source # | |
Defined in Test.Ouroboros.Network.Diffusion.Node.Kernel Methods acceptableVersion :: NtNVersionData -> NtNVersionData -> Accept NtNVersionData # |
type NtCAddr = TestAddress Int Source #
type NtCVersion = UnversionedProtocol Source #
Node-to-node address type.
Constructors
EphemeralIPv4Addr Natural | |
EphemeralIPv6Addr Natural | |
IPAddr IP PortNumber |
Instances
extra types used by the node
data AcceptedConnectionsLimit #
Policy which governs how to limit the number of accepted connections.
Constructors
AcceptedConnectionsLimit | |
Fields
|
Instances
Show AcceptedConnectionsLimit | |
Defined in Ouroboros.Network.Server.RateLimiting Methods showsPrec :: Int -> AcceptedConnectionsLimit -> ShowS # show :: AcceptedConnectionsLimit -> String # showList :: [AcceptedConnectionsLimit] -> ShowS # | |
Eq AcceptedConnectionsLimit | |
Defined in Ouroboros.Network.Server.RateLimiting Methods (==) :: AcceptedConnectionsLimit -> AcceptedConnectionsLimit -> Bool # (/=) :: AcceptedConnectionsLimit -> AcceptedConnectionsLimit -> Bool # | |
Ord AcceptedConnectionsLimit | |
Defined in Ouroboros.Network.Server.RateLimiting Methods compare :: AcceptedConnectionsLimit -> AcceptedConnectionsLimit -> Ordering # (<) :: AcceptedConnectionsLimit -> AcceptedConnectionsLimit -> Bool # (<=) :: AcceptedConnectionsLimit -> AcceptedConnectionsLimit -> Bool # (>) :: AcceptedConnectionsLimit -> AcceptedConnectionsLimit -> Bool # (>=) :: AcceptedConnectionsLimit -> AcceptedConnectionsLimit -> Bool # max :: AcceptedConnectionsLimit -> AcceptedConnectionsLimit -> AcceptedConnectionsLimit # min :: AcceptedConnectionsLimit -> AcceptedConnectionsLimit -> AcceptedConnectionsLimit # |
data DiffusionMode #
The flag which indicates whether the node runs only initiator or both initiator or responder node.
This data structure has two proposes:
- instruct the diffusion layer if it should listen on incoming connections;
- it is communicated via
NodeToNodeVersionData
during handshake negotiation. In non-p2p mode we always sendInitiatorOnlyDiffusionMode
, in p2p mode we send exactly what the diffusion is given. In non-p2p mode every connection outbound port is ephemeral, the remote side cannot connect to it, however in p2p mode the outbound port is actually the port on which the node is listening (if it runs inInitiatorAndResponderDiffusionMode
).
Instances
Show DiffusionMode | |
Defined in Ouroboros.Network.NodeToNode.Version Methods showsPrec :: Int -> DiffusionMode -> ShowS # show :: DiffusionMode -> String # showList :: [DiffusionMode] -> ShowS # | |
Eq DiffusionMode | |
Defined in Ouroboros.Network.NodeToNode.Version Methods (==) :: DiffusionMode -> DiffusionMode -> Bool # (/=) :: DiffusionMode -> DiffusionMode -> Bool # | |
Ord DiffusionMode | |
Defined in Ouroboros.Network.NodeToNode.Version Methods compare :: DiffusionMode -> DiffusionMode -> Ordering # (<) :: DiffusionMode -> DiffusionMode -> Bool # (<=) :: DiffusionMode -> DiffusionMode -> Bool # (>) :: DiffusionMode -> DiffusionMode -> Bool # (>=) :: DiffusionMode -> DiffusionMode -> Bool # max :: DiffusionMode -> DiffusionMode -> DiffusionMode # min :: DiffusionMode -> DiffusionMode -> DiffusionMode # |
data PeerAdvertise #
Should this peer be advertised to other peers asking for known peers? For certain peers specified by configuration it would be an appropriate policy to keep them private.
Constructors
DoNotAdvertisePeer | |
DoAdvertisePeer |
Instances
Arbitrary PeerAdvertise Source # | |||||
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-api-0.12.0.0-inplace" 'False) (C1 ('MetaCons "DoNotAdvertisePeer" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DoAdvertisePeer" 'PrefixI 'False) (U1 :: Type -> Type)) |
data PeerSelectionTargets #
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
Arbitrary PeerSelectionTargets Source # | |
Defined in Test.Ouroboros.Network.PeerSelection.Instances Methods | |
Show PeerSelectionTargets | |
Defined in Ouroboros.Network.PeerSelection.Governor.Types Methods showsPrec :: Int -> PeerSelectionTargets -> ShowS # show :: PeerSelectionTargets -> String # showList :: [PeerSelectionTargets] -> ShowS # | |
Eq PeerSelectionTargets | |
Defined in Ouroboros.Network.PeerSelection.Governor.Types Methods (==) :: PeerSelectionTargets -> PeerSelectionTargets -> Bool # (/=) :: PeerSelectionTargets -> PeerSelectionTargets -> Bool # |
configuration constants
re-exports
data BlockGeneratorArgs block s Source #
Constructors
BlockGeneratorArgs | |
Fields
|
data LimitsAndTimeouts header block Source #
Limits and protocol timeouts
Constructors
LimitsAndTimeouts | |
Fields
|
randomBlockGenerationArgs :: DiffTime -> StdGen -> Int -> BlockGeneratorArgs Block StdGen Source #
Generate a block according to given probability.