{-# LANGUAGE NamedFieldPuns #-}
module Ouroboros.Network.Diffusion.Configuration
( defaultAcceptedConnectionsLimit
, defaultPeerSharing
, defaultDeadlineTargets
, defaultDeadlineChurnInterval
, defaultBulkChurnInterval
, BlockProducerOrRelay (..)
, AcceptedConnectionsLimit (..)
, DiffusionMode (..)
, PeerSelectionTargets (..)
, PeerSharing (..)
, defaultEgressPollInterval
, defaultMuxCountersInterval
, deactivateTimeout
, closeConnectionTimeout
, peerMetricsConfiguration
, defaultTimeWaitTimeout
, defaultProtocolIdleTimeout
, defaultResetTimeout
, handshake_QUERY_SHUTDOWN_DELAY
, ps_POLICY_PEER_SHARE_STICKY_TIME
, ps_POLICY_PEER_SHARE_MAX_PEERS
, local_PROTOCOL_IDLE_TIMEOUT
, local_TIME_WAIT_TIMEOUT
) where
import Control.Monad.Class.MonadTime.SI
import Network.Mux qualified as Mx
import Ouroboros.Network.ConnectionManager.Core (defaultProtocolIdleTimeout,
defaultResetTimeout, defaultTimeWaitTimeout)
import Ouroboros.Network.Diffusion.Policies (closeConnectionTimeout,
deactivateTimeout, peerMetricsConfiguration)
import Ouroboros.Network.DiffusionMode
import Ouroboros.Network.PeerSelection.Governor.Types
(PeerSelectionTargets (..))
import Ouroboros.Network.PeerSelection.PeerSharing (PeerSharing (..))
import Ouroboros.Network.PeerSharing (ps_POLICY_PEER_SHARE_MAX_PEERS,
ps_POLICY_PEER_SHARE_STICKY_TIME)
import Ouroboros.Network.Protocol.Handshake (handshake_QUERY_SHUTDOWN_DELAY)
import Ouroboros.Network.Server.RateLimiting (AcceptedConnectionsLimit (..))
data BlockProducerOrRelay = BlockProducer | Relay
deriving Int -> BlockProducerOrRelay -> ShowS
[BlockProducerOrRelay] -> ShowS
BlockProducerOrRelay -> String
(Int -> BlockProducerOrRelay -> ShowS)
-> (BlockProducerOrRelay -> String)
-> ([BlockProducerOrRelay] -> ShowS)
-> Show BlockProducerOrRelay
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> BlockProducerOrRelay -> ShowS
showsPrec :: Int -> BlockProducerOrRelay -> ShowS
$cshow :: BlockProducerOrRelay -> String
show :: BlockProducerOrRelay -> String
$cshowList :: [BlockProducerOrRelay] -> ShowS
showList :: [BlockProducerOrRelay] -> ShowS
Show
defaultDeadlineTargets :: BlockProducerOrRelay
-> PeerSelectionTargets
defaultDeadlineTargets :: BlockProducerOrRelay -> PeerSelectionTargets
defaultDeadlineTargets BlockProducerOrRelay
bp =
PeerSelectionTargets {
targetNumberOfRootPeers :: Int
targetNumberOfRootPeers = case BlockProducerOrRelay
bp of { BlockProducerOrRelay
BlockProducer -> Int
100; BlockProducerOrRelay
Relay -> Int
60 },
targetNumberOfKnownPeers :: Int
targetNumberOfKnownPeers = case BlockProducerOrRelay
bp of { BlockProducerOrRelay
BlockProducer -> Int
100; BlockProducerOrRelay
Relay -> Int
150 },
targetNumberOfEstablishedPeers :: Int
targetNumberOfEstablishedPeers = Int
30,
targetNumberOfActivePeers :: Int
targetNumberOfActivePeers = Int
20,
targetNumberOfKnownBigLedgerPeers :: Int
targetNumberOfKnownBigLedgerPeers = Int
15,
targetNumberOfEstablishedBigLedgerPeers :: Int
targetNumberOfEstablishedBigLedgerPeers = Int
10,
targetNumberOfActiveBigLedgerPeers :: Int
targetNumberOfActiveBigLedgerPeers = Int
5 }
defaultAcceptedConnectionsLimit :: AcceptedConnectionsLimit
defaultAcceptedConnectionsLimit :: AcceptedConnectionsLimit
defaultAcceptedConnectionsLimit =
AcceptedConnectionsLimit {
acceptedConnectionsHardLimit :: Word32
acceptedConnectionsHardLimit = Word32
512,
acceptedConnectionsSoftLimit :: Word32
acceptedConnectionsSoftLimit = Word32
384,
acceptedConnectionsDelay :: DiffTime
acceptedConnectionsDelay = DiffTime
5 }
defaultPeerSharing :: BlockProducerOrRelay
-> PeerSharing
defaultPeerSharing :: BlockProducerOrRelay -> PeerSharing
defaultPeerSharing BlockProducerOrRelay
BlockProducer = PeerSharing
PeerSharingDisabled
defaultPeerSharing BlockProducerOrRelay
Relay = PeerSharing
PeerSharingEnabled
defaultDeadlineChurnInterval :: DiffTime
defaultDeadlineChurnInterval :: DiffTime
defaultDeadlineChurnInterval = DiffTime
3300
defaultBulkChurnInterval :: DiffTime
defaultBulkChurnInterval :: DiffTime
defaultBulkChurnInterval = DiffTime
900
local_PROTOCOL_IDLE_TIMEOUT :: DiffTime
local_PROTOCOL_IDLE_TIMEOUT :: DiffTime
local_PROTOCOL_IDLE_TIMEOUT = DiffTime
2
local_TIME_WAIT_TIMEOUT :: DiffTime
local_TIME_WAIT_TIMEOUT :: DiffTime
local_TIME_WAIT_TIMEOUT = DiffTime
0
defaultEgressPollInterval :: DiffTime
defaultEgressPollInterval :: DiffTime
defaultEgressPollInterval = DiffTime
0
defaultMuxCountersInterval :: DiffTime
defaultMuxCountersInterval :: DiffTime
defaultMuxCountersInterval = DiffTime
Mx.countersInterval