| 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, TYPE) MockDNSLookupResult)
- iLedgerPeersConsensusInterface :: LedgerPeersConsensusInterface extraAPI m
- iConnStateIdSupply :: ConnStateIdSupply m
- iSRVPrefix :: SRVPrefix
- 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)
- aPeerSharing :: PeerSharing
- aReadUseLedgerPeers :: STM m UseLedgerPeers
- aProtocolIdleTimeout :: DiffTime
- aTimeWaitTimeout :: DiffTime
- aDNSTimeoutScript :: Script DNSTimeout
- aDNSLookupDelayScript :: Script DNSLookupDelay
- aDebugTracer :: Tracer m String
- aExtraChurnArgs :: extraChurnArgs
- aTxDecisionPolicy :: TxDecisionPolicy
- aTxs :: [Tx Int]
- run :: forall extraState extraDebugState extraAPI extraPeers extraFlags extraChurnArgs extraCounters extraTrace exception resolver 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 ~ (), forall a. Semigroup a => Semigroup (m a)) => BlockGeneratorArgs Block StdGen -> 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 extraTrace 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 m -> DNSSemaphore m -> (Map NtNAddr PeerAdvertise -> extraPeers) -> (NumberOfPeers -> LedgerPeersKind -> m (Maybe (Set NtNAddr, DiffTime))) -> LedgerPeersKind -> StdGen -> Int -> m (PublicRootPeers extraPeers NtNAddr, DiffTime)) -> (PeerChurnArgs m extraChurnArgs extraDebugState extraFlags extraPeers extraAPI extraCounters extraTrace NtNAddr -> m Void) -> Tracers NtNAddr NtNVersion NtNVersionData NtCAddr NtCVersion NtCVersionData extraState extraDebugState extraFlags extraPeers extraCounters extraTrace m -> Tracer m (TraceLabelPeer NtNAddr (TraceFetchClientState BlockHeader)) -> Tracer m (TraceTxLogic NtNAddr Int (Tx Int)) -> (NodeKernel BlockHeader Block StdGen Int m -> StdGen -> Applications NtNAddr NtNVersion NtNVersionData NtCAddr NtCVersion NtCVersionData m ()) -> 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
- 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 extraTrace exception resolver 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 ~ (), forall a. Semigroup a => Semigroup (m a)) => BlockGeneratorArgs Block StdGen -> 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 extraTrace 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 m -> DNSSemaphore m -> (Map NtNAddr PeerAdvertise -> extraPeers) -> (NumberOfPeers -> LedgerPeersKind -> m (Maybe (Set NtNAddr, DiffTime))) -> LedgerPeersKind -> StdGen -> Int -> m (PublicRootPeers extraPeers NtNAddr, DiffTime)) -> (PeerChurnArgs m extraChurnArgs extraDebugState extraFlags extraPeers extraAPI extraCounters extraTrace NtNAddr -> m Void) -> Tracers NtNAddr NtNVersion NtNVersionData NtCAddr NtCVersion NtCVersionData extraState extraDebugState extraFlags extraPeers extraCounters extraTrace m -> Tracer m (TraceLabelPeer NtNAddr (TraceFetchClientState BlockHeader)) -> Tracer m (TraceTxLogic NtNAddr Int (Tx Int)) -> (NodeKernel BlockHeader Block StdGen Int m -> StdGen -> Applications NtNAddr NtNVersion NtNVersionData NtCAddr NtCVersion NtCVersionData m ()) -> m Void Source #
node types
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 NtCVersion = UnversionedProtocol Source #
type NtCVersionData = UnversionedProtocolData Source #
Node-to-node address type.
Constructors
| EphemeralIPv4Addr Natural | |
| EphemeralIPv6Addr Natural | |
| IPAddr IP PortNumber |
Instances
extra types used by the node
data AcceptedConnectionsLimit #
Constructors
| AcceptedConnectionsLimit | |
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 #
Instances
| Show DiffusionMode | |
Defined in Ouroboros.Network.DiffusionMode Methods showsPrec :: Int -> DiffusionMode -> ShowS # show :: DiffusionMode -> String # showList :: [DiffusionMode] -> ShowS # | |
| Eq DiffusionMode | |
Defined in Ouroboros.Network.DiffusionMode Methods (==) :: DiffusionMode -> DiffusionMode -> Bool # (/=) :: DiffusionMode -> DiffusionMode -> Bool # | |
| Ord DiffusionMode | |
Defined in Ouroboros.Network.DiffusionMode 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 #
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-0.23.0.0-inplace-api" '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
| |
randomBlockGenerationArgs :: DiffTime -> StdGen -> Int -> BlockGeneratorArgs Block StdGen Source #
Generate a block according to given probability.