{-# 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
, Cardano.Churn.TraceChurnMode (..)
, module Reexports
) where
import Control.Concurrent.Class.MonadSTM.Strict
import Control.Tracer (Tracer)
import Network.Socket (SockAddr, Socket)
import Cardano.Network.ConsensusMode as Reexports (ConsensusMode (..))
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 as Rexports (NumberOfBigLedgerPeers (..),
PeerTrustable (..), UseBootstrapPeers (..))
import Cardano.Network.PeerSelection qualified as Cardano
import Cardano.Network.PeerSelection.Churn qualified as Cardano.Churn
import Ouroboros.Network.Diffusion qualified as Diffusion
import Ouroboros.Network.PeerSelection as Reexports
(LedgerPeersConsensusInterface (..), PeerMetrics,
PeerSelectionTargets)
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)
Cardano.ExtraTrace
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 = Cardano.LocalRootConfig PeerTrustable
type CardanoTraceLocalRootPeers =
Cardano.TraceLocalRootPeers PeerTrustable RemoteAddress
type CardanoTracePeerSelection =
Cardano.TracePeerSelection Cardano.DebugPeerSelectionState
PeerTrustable
(Cardano.ExtraPeers SockAddr)
RemoteAddress
type CardanoDebugPeerSelection =
Cardano.DebugPeerSelection Cardano.ExtraState
PeerTrustable
(Cardano.ExtraPeers RemoteAddress)
RemoteAddress
type CardanoPeerSelectionCounters =
Cardano.PeerSelectionCounters (Cardano.ExtraPeerSelectionSetsWithSizes RemoteAddress)