{-# LANGUAGE DataKinds #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE KindSignatures #-}
module Cardano.Network.Diffusion.Types
( CardanoNodeArguments (..)
, CardanoConsensusArguments (..)
, CardanoTracers
, Diffusion.Tracers (..)
, Diffusion.nullTracers
, CardanoConfiguration
, CardanoApplications
, Diffusion.Configuration (..)
, Diffusion.Applications (..)
, CardanoPeerSelectionCounters
, CardanoLocalRootConfig
, CardanoTraceLocalRootPeers
, CardanoTracePeerSelection
, CardanoDebugPeerSelection
, PeerMetrics
, Cardano.Churn.TraceChurnMode (..)
) where
import Control.Concurrent.Class.MonadSTM.Strict
import Control.Tracer (Tracer)
import Network.Socket (SockAddr, Socket)
import Cardano.Network.LedgerPeerConsensusInterface qualified as Cardano
import Cardano.Network.NodeToClient (LocalAddress, LocalSocket,
NodeToClientVersion, NodeToClientVersionData)
import Cardano.Network.NodeToNode (NodeToNodeVersion, NodeToNodeVersionData,
RemoteAddress)
import Cardano.Network.PeerSelection.Bootstrap (UseBootstrapPeers)
import Cardano.Network.PeerSelection.Churn qualified as Cardano.Churn
import Cardano.Network.PeerSelection.ExtraRootPeers (ExtraPeers)
import Cardano.Network.PeerSelection.ExtraRootPeers qualified as Cardano
import Cardano.Network.PeerSelection.Governor.PeerSelectionState (ExtraState)
import Cardano.Network.PeerSelection.Governor.PeerSelectionState qualified as Cardano
import Cardano.Network.PeerSelection.Governor.Types qualified as Cardano
import Cardano.Network.PeerSelection.PeerTrustable (PeerTrustable)
import Cardano.Network.Types (NumberOfBigLedgerPeers (..))
import Ouroboros.Network.Diffusion qualified as Diffusion
import Ouroboros.Network.Diffusion.Configuration (ConsensusMode)
import Ouroboros.Network.PeerSelection.Governor.Types (DebugPeerSelection,
PeerSelectionCounters, PeerSelectionTargets (..), TracePeerSelection)
import Ouroboros.Network.PeerSelection.LedgerPeers.Type
(LedgerPeersConsensusInterface (..))
import Ouroboros.Network.PeerSelection.PeerMetric (PeerMetrics)
import Ouroboros.Network.PeerSelection.RootPeersDNS.LocalRootPeers
(TraceLocalRootPeers)
import Ouroboros.Network.PeerSelection.State.LocalRootPeers (LocalRootConfig)
data CardanoNodeArguments m = CardanoNodeArguments {
forall (m :: * -> *). CardanoNodeArguments m -> ConsensusMode
consensusMode :: ConsensusMode,
forall (m :: * -> *).
CardanoNodeArguments m -> PeerSelectionTargets
genesisPeerSelectionTargets
:: PeerSelectionTargets,
forall (m :: * -> *).
CardanoNodeArguments m -> NumberOfBigLedgerPeers
minNumOfBigLedgerPeers :: NumberOfBigLedgerPeers,
forall (m :: * -> *).
CardanoNodeArguments m -> Tracer m TraceChurnMode
tracerChurnMode :: Tracer m Cardano.Churn.TraceChurnMode
}
data CardanoConsensusArguments ntnAddr m =
CardanoConsensusArguments {
forall ntnAddr (m :: * -> *).
CardanoConsensusArguments ntnAddr m -> StrictTVar m ChurnMode
churnModeVar :: StrictTVar m Cardano.Churn.ChurnMode,
forall ntnAddr (m :: * -> *).
CardanoConsensusArguments ntnAddr m -> PeerMetrics m ntnAddr
churnMetrics :: PeerMetrics m ntnAddr,
forall ntnAddr (m :: * -> *).
CardanoConsensusArguments ntnAddr m
-> LedgerPeersConsensusInterface
(LedgerPeersConsensusInterface m) m
ledgerPeersAPI :: LedgerPeersConsensusInterface (Cardano.LedgerPeersConsensusInterface m) m,
forall ntnAddr (m :: * -> *).
CardanoConsensusArguments ntnAddr m -> STM m UseBootstrapPeers
readUseBootstrapPeers :: STM m UseBootstrapPeers
}
type CardanoTracers m =
Diffusion.Tracers
RemoteAddress NodeToNodeVersion NodeToNodeVersionData
LocalAddress NodeToClientVersion NodeToClientVersionData
Cardano.ExtraState
Cardano.DebugPeerSelectionState
PeerTrustable
(Cardano.ExtraPeers RemoteAddress)
(Cardano.ExtraPeerSelectionSetsWithSizes RemoteAddress)
m
type CardanoConfiguration m =
Diffusion.Configuration
PeerTrustable
m
Socket
RemoteAddress
LocalSocket
LocalAddress
type CardanoApplications m a =
Diffusion.Applications
RemoteAddress
NodeToNodeVersion
NodeToNodeVersionData
LocalAddress
NodeToClientVersion
NodeToClientVersionData
m a
type CardanoLocalRootConfig = LocalRootConfig PeerTrustable
type CardanoTraceLocalRootPeers =
TraceLocalRootPeers PeerTrustable RemoteAddress
type CardanoTracePeerSelection =
TracePeerSelection Cardano.DebugPeerSelectionState
PeerTrustable
(ExtraPeers SockAddr)
RemoteAddress
type CardanoDebugPeerSelection =
DebugPeerSelection ExtraState
PeerTrustable
(ExtraPeers RemoteAddress)
RemoteAddress
type CardanoPeerSelectionCounters =
PeerSelectionCounters (Cardano.ExtraPeerSelectionSetsWithSizes RemoteAddress)