{-# LANGUAGE FlexibleInstances   #-}
{-# LANGUAGE NamedFieldPuns      #-}
{-# LANGUAGE OverloadedStrings   #-}
{-# LANGUAGE RankNTypes          #-}
{-# LANGUAGE RecordWildCards     #-}
{-# LANGUAGE ScopedTypeVariables #-}

{-# OPTIONS_GHC -Wno-orphans #-}

module DMQ.Tracer
  ( dmqTracer
  , dmqDiffusionTracers
  , WithEventType (..)
  , NoExtraPeers (..)
  , NoExtraState (..)
  , NoExtraDebugState (..)
  , NoExtraCounters (..)
  , NoExtraFlags (..)
  , NoExtraConfig (..)
  , NoExtraAPI (..)
  , NoExtraChurnArgs (..)
  ) where

import Codec.CBOR.Term (Term)
import Control.Monad.Class.MonadTime
import Control.Tracer

import Data.Aeson
import Data.Aeson.Encode.Pretty (encodePretty)
import Data.Bool (bool)
import Data.ByteString.Lazy.Char8 qualified as LBS.Char8
import Data.Functor.Contravariant ((>$<))
import Data.Set qualified as Set
import Data.Text qualified as Text

import Ouroboros.Network.Diffusion qualified as Diffusion
import Ouroboros.Network.OrphanInstances ()
import Ouroboros.Network.PeerSelection (DebugPeerSelection (..))
import Ouroboros.Network.PeerSelection.Governor.Types qualified as Governor
import Ouroboros.Network.PeerSelection.PublicRootPeers (PublicRootPeers)
import Ouroboros.Network.PeerSelection.PublicRootPeers qualified as PublicRootPeers
import Ouroboros.Network.Snocket (LocalAddress, RemoteAddress)

import DMQ.Configuration
import DMQ.NodeToClient.Version
import DMQ.NodeToNode.Version

data TraceEvent ev = TraceEvent
  { forall ev. TraceEvent ev -> UTCTime
time      :: UTCTime
  , forall ev. TraceEvent ev -> String
eventType :: String
  , forall ev. TraceEvent ev -> ev
event     :: ev
  }

instance ToJSON ev => ToJSON (TraceEvent ev) where
  toJSON :: TraceEvent ev -> Value
toJSON TraceEvent {UTCTime
time :: forall ev. TraceEvent ev -> UTCTime
time :: UTCTime
time, String
eventType :: forall ev. TraceEvent ev -> String
eventType :: String
eventType, ev
event :: forall ev. TraceEvent ev -> ev
event :: ev
event} =
    [Pair] -> Value
object [ Key
"time"  Key -> UTCTime -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= UTCTime
time
           , Key
"type"  Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= String
eventType
           , Key
"event" Key -> ev -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ev
event
           ]

data WithEventType a = WithEventType String a
  deriving Int -> WithEventType a -> ShowS
[WithEventType a] -> ShowS
WithEventType a -> String
(Int -> WithEventType a -> ShowS)
-> (WithEventType a -> String)
-> ([WithEventType a] -> ShowS)
-> Show (WithEventType a)
forall a. Show a => Int -> WithEventType a -> ShowS
forall a. Show a => [WithEventType a] -> ShowS
forall a. Show a => WithEventType a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall a. Show a => Int -> WithEventType a -> ShowS
showsPrec :: Int -> WithEventType a -> ShowS
$cshow :: forall a. Show a => WithEventType a -> String
show :: WithEventType a -> String
$cshowList :: forall a. Show a => [WithEventType a] -> ShowS
showList :: [WithEventType a] -> ShowS
Show
instance ToJSON a => ToJSON (WithEventType a) where
  toJSON :: WithEventType a -> Value
toJSON (WithEventType String
eventType a
a) = (String, a) -> Value
forall a. ToJSON a => a -> Value
toJSON (String
eventType, a
a)

-- | DMQ tracer
dmqTracer :: ToJSON ev
          => Bool
          -> Tracer IO (WithEventType ev)
dmqTracer :: forall ev. ToJSON ev => Bool -> Tracer IO (WithEventType ev)
dmqTracer Bool
pretty = (WithEventType ev -> IO ByteString)
-> Tracer IO ByteString -> Tracer IO (WithEventType ev)
forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Tracer m b -> Tracer m a
contramapM
           (\(WithEventType String
eventType ev
event) -> do
              time <- IO UTCTime
forall (m :: * -> *). MonadTime m => m UTCTime
getCurrentTime
              return $ bool encode encodePretty pretty TraceEvent { time, eventType, event }
           )
       (Tracer IO ByteString -> Tracer IO (WithEventType ev))
-> Tracer IO ByteString -> Tracer IO (WithEventType ev)
forall a b. (a -> b) -> a -> b
$ (ByteString -> IO ()) -> Tracer IO ByteString
forall (m :: * -> *) a. (a -> m ()) -> Tracer m a
Tracer ByteString -> IO ()
LBS.Char8.putStrLn

-- An orphan instance needed for `Handshake versionNumber Term`
instance ToJSON Term where
  toJSON :: Term -> Value
toJSON Term
term = Text -> Value
String (String -> Text
Text.pack (String -> Text) -> (Term -> String) -> Term -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Term -> String
forall a. Show a => a -> String
show (Term -> Text) -> Term -> Text
forall a b. (a -> b) -> a -> b
$ Term
term)

data NoExtraPeers = NoExtraPeers
instance Semigroup NoExtraPeers where
  NoExtraPeers
_ <> :: NoExtraPeers -> NoExtraPeers -> NoExtraPeers
<> NoExtraPeers
_ = NoExtraPeers
NoExtraPeers
instance Monoid NoExtraPeers where
  mempty :: NoExtraPeers
mempty = NoExtraPeers
NoExtraPeers

instance ToJSON NoExtraPeers where
  toJSON :: NoExtraPeers -> Value
toJSON NoExtraPeers
_ = Value
Null
  omitField :: NoExtraPeers -> Bool
omitField NoExtraPeers
_ = Bool
True

instance ToJSON (PublicRootPeers NoExtraPeers RemoteAddress) where
  toJSON :: PublicRootPeers NoExtraPeers RemoteAddress -> Value
toJSON PublicRootPeers NoExtraPeers RemoteAddress
prp =
    [Pair] -> Value
object [ Key
"kind"              Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PublicRootPeers"
           , Key
"ledgerPeers"       Key -> Set RemoteAddress -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= PublicRootPeers NoExtraPeers RemoteAddress -> Set RemoteAddress
forall extraPeers peeraddr.
PublicRootPeers extraPeers peeraddr -> Set peeraddr
PublicRootPeers.getLedgerPeers PublicRootPeers NoExtraPeers RemoteAddress
prp
           , Key
"bigLedgerPeers"    Key -> Set RemoteAddress -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= PublicRootPeers NoExtraPeers RemoteAddress -> Set RemoteAddress
forall extraPeers peeraddr.
PublicRootPeers extraPeers peeraddr -> Set peeraddr
PublicRootPeers.getBigLedgerPeers PublicRootPeers NoExtraPeers RemoteAddress
prp
           ]

data NoExtraState      = NoExtraState
data NoExtraCounters   = NoExtraCounters   deriving NoExtraCounters -> NoExtraCounters -> Bool
(NoExtraCounters -> NoExtraCounters -> Bool)
-> (NoExtraCounters -> NoExtraCounters -> Bool)
-> Eq NoExtraCounters
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: NoExtraCounters -> NoExtraCounters -> Bool
== :: NoExtraCounters -> NoExtraCounters -> Bool
$c/= :: NoExtraCounters -> NoExtraCounters -> Bool
/= :: NoExtraCounters -> NoExtraCounters -> Bool
Eq
data NoExtraDebugState = NoExtraDebugState
instance ToJSON NoExtraDebugState where
  toJSON :: NoExtraDebugState -> Value
toJSON NoExtraDebugState
_ = Value
Null
  omitField :: NoExtraDebugState -> Bool
omitField NoExtraDebugState
_ = Bool
True
data NoExtraChurnArgs  = NoExtraChurnArgs
data NoExtraAPI        = NoExtraAPI

instance ToJSON (Governor.PeerSelectionCounters NoExtraCounters) where
  toJSON :: PeerSelectionCounters NoExtraCounters -> Value
toJSON Governor.PeerSelectionCounters {Int
NoExtraCounters
numberOfRootPeers :: Int
numberOfKnownPeers :: Int
numberOfAvailableToConnectPeers :: Int
numberOfColdPeersPromotions :: Int
numberOfEstablishedPeers :: Int
numberOfWarmPeersDemotions :: Int
numberOfWarmPeersPromotions :: Int
numberOfActivePeers :: Int
numberOfActivePeersDemotions :: Int
numberOfKnownBigLedgerPeers :: Int
numberOfAvailableToConnectBigLedgerPeers :: Int
numberOfColdBigLedgerPeersPromotions :: Int
numberOfEstablishedBigLedgerPeers :: Int
numberOfWarmBigLedgerPeersDemotions :: Int
numberOfWarmBigLedgerPeersPromotions :: Int
numberOfActiveBigLedgerPeers :: Int
numberOfActiveBigLedgerPeersDemotions :: Int
numberOfKnownLocalRootPeers :: Int
numberOfAvailableToConnectLocalRootPeers :: Int
numberOfColdLocalRootPeersPromotions :: Int
numberOfEstablishedLocalRootPeers :: Int
numberOfWarmLocalRootPeersPromotions :: Int
numberOfActiveLocalRootPeers :: Int
numberOfActiveLocalRootPeersDemotions :: Int
numberOfKnownNonRootPeers :: Int
numberOfColdNonRootPeersPromotions :: Int
numberOfEstablishedNonRootPeers :: Int
numberOfWarmNonRootPeersDemotions :: Int
numberOfWarmNonRootPeersPromotions :: Int
numberOfActiveNonRootPeers :: Int
numberOfActiveNonRootPeersDemotions :: Int
extraCounters :: NoExtraCounters
extraCounters :: forall extraCounters.
PeerSelectionCounters extraCounters -> extraCounters
numberOfActiveBigLedgerPeers :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfActiveBigLedgerPeersDemotions :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfActiveLocalRootPeers :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfActiveLocalRootPeersDemotions :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfActiveNonRootPeers :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfActiveNonRootPeersDemotions :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfActivePeers :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfActivePeersDemotions :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfAvailableToConnectBigLedgerPeers :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfAvailableToConnectLocalRootPeers :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfAvailableToConnectPeers :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfColdBigLedgerPeersPromotions :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfColdLocalRootPeersPromotions :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfColdNonRootPeersPromotions :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfColdPeersPromotions :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfEstablishedBigLedgerPeers :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfEstablishedLocalRootPeers :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfEstablishedNonRootPeers :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfEstablishedPeers :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfKnownBigLedgerPeers :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfKnownLocalRootPeers :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfKnownNonRootPeers :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfKnownPeers :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfRootPeers :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfWarmBigLedgerPeersDemotions :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfWarmBigLedgerPeersPromotions :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfWarmLocalRootPeersPromotions :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfWarmNonRootPeersDemotions :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfWarmNonRootPeersPromotions :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfWarmPeersDemotions :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfWarmPeersPromotions :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
..} =
    [Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PeerSelectionCounters"

           , Key
"knownPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfKnownPeers
           , Key
"rootPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfRootPeers
           , Key
"coldPeersPromotions" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfColdPeersPromotions
           , Key
"establishedPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfEstablishedPeers
           , Key
"warmPeersDemotions" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfWarmPeersDemotions
           , Key
"warmPeersPromotions" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfWarmPeersPromotions
           , Key
"activePeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfActivePeers
           , Key
"activePeersDemotions" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfActivePeersDemotions

           , Key
"knownBigLedgerPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfKnownBigLedgerPeers
           , Key
"coldBigLedgerPeersPromotions" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfColdBigLedgerPeersPromotions
           , Key
"establishedBigLedgerPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfEstablishedBigLedgerPeers
           , Key
"warmBigLedgerPeersDemotions" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfWarmBigLedgerPeersDemotions
           , Key
"warmBigLedgerPeersPromotions" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfWarmBigLedgerPeersPromotions
           , Key
"activeBigLedgerPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfActiveBigLedgerPeers
           , Key
"activeBigLedgerPeersDemotions" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfActiveBigLedgerPeersDemotions

           , Key
"knownLocalRootPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfKnownLocalRootPeers
           , Key
"establishedLocalRootPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfEstablishedLocalRootPeers
           , Key
"warmLocalRootPeersPromotions" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfWarmLocalRootPeersPromotions
           , Key
"activeLocalRootPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfActiveLocalRootPeers
           , Key
"activeLocalRootPeersDemotions" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfActiveLocalRootPeersDemotions

           , Key
"knownNonRootPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfKnownNonRootPeers
           , Key
"coldNonRootPeersPromotions" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfColdNonRootPeersPromotions
           , Key
"establishedNonRootPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfEstablishedNonRootPeers
           , Key
"warmNonRootPeersDemotions" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfWarmNonRootPeersDemotions
           , Key
"warmNonRootPeersPromotions" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfWarmNonRootPeersPromotions
           , Key
"activeNonRootPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfActiveNonRootPeers
           , Key
"activeNonRootPeersDemotions" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfActiveNonRootPeersDemotions
           ]

instance ToJSON (DebugPeerSelection NoExtraState NoExtraFlags NoExtraPeers RemoteAddress) where
  toJSON :: DebugPeerSelection
  NoExtraState NoExtraFlags NoExtraPeers RemoteAddress
-> Value
toJSON (TraceGovernorState Time
blockedAt Maybe DiffTime
wakeupAfter st :: PeerSelectionState
  NoExtraState NoExtraFlags NoExtraPeers RemoteAddress peerconn
st@Governor.PeerSelectionState { PeerSelectionTargets
targets :: PeerSelectionTargets
targets :: forall extraState extraFlags extraPeers peeraddr peerconn.
PeerSelectionState
  extraState extraFlags extraPeers peeraddr peerconn
-> PeerSelectionTargets
Governor.targets }) =
    [Pair] -> Value
object [ Key
"kind"        Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"DebugPeerSelection"
           , Key
"blockedAt"   Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
Text.pack (String -> Text) -> (Time -> String) -> Time -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Time -> String
forall a. Show a => a -> String
show (Time -> Text) -> Time -> Text
forall a b. (a -> b) -> a -> b
$ Time
blockedAt)
           , Key
"wakeupAfter" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
Text.pack (String -> Text)
-> (Maybe DiffTime -> String) -> Maybe DiffTime -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Maybe DiffTime -> String
forall a. Show a => a -> String
show (Maybe DiffTime -> Text) -> Maybe DiffTime -> Text
forall a b. (a -> b) -> a -> b
$ Maybe DiffTime
wakeupAfter)
           , Key
"targets"     Key -> PeerSelectionTargets -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= PeerSelectionTargets
targets
           , Key
"counters"    Key -> PeerSelectionCounters NoExtraCounters -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (NoExtraPeers -> Set RemoteAddress)
-> (PeerSelectionState
      NoExtraState NoExtraFlags NoExtraPeers RemoteAddress peerconn
    -> NoExtraCounters)
-> PeerSelectionState
     NoExtraState NoExtraFlags NoExtraPeers RemoteAddress peerconn
-> PeerSelectionCounters NoExtraCounters
forall peeraddr extraPeers extraState extraFlags peerconn
       extraCounters.
Ord peeraddr =>
(extraPeers -> Set peeraddr)
-> (PeerSelectionState
      extraState extraFlags extraPeers peeraddr peerconn
    -> extraCounters)
-> PeerSelectionState
     extraState extraFlags extraPeers peeraddr peerconn
-> PeerSelectionCounters extraCounters
Governor.peerSelectionStateToCounters
                                (Set RemoteAddress -> NoExtraPeers -> Set RemoteAddress
forall a b. a -> b -> a
const Set RemoteAddress
forall a. Set a
Set.empty)
                                (NoExtraCounters
-> PeerSelectionState
     NoExtraState NoExtraFlags NoExtraPeers RemoteAddress peerconn
-> NoExtraCounters
forall a b. a -> b -> a
const NoExtraCounters
NoExtraCounters)
                                PeerSelectionState
  NoExtraState NoExtraFlags NoExtraPeers RemoteAddress peerconn
st
           ]

dmqDiffusionTracers
  :: forall m.
     Applicative m
  => Configuration
  -> (forall ev. ToJSON ev => Tracer m (WithEventType ev))
  -> Diffusion.Tracers RemoteAddress NodeToNodeVersion   NodeToNodeVersionData
                       LocalAddress  NodeToClientVersion NodeToClientVersionData
                       NoExtraState
                       NoExtraDebugState
                       NoExtraFlags
                       NoExtraPeers
                       NoExtraCounters
                       m
dmqDiffusionTracers :: forall (m :: * -> *).
Applicative m =>
Configuration
-> (forall ev. ToJSON ev => Tracer m (WithEventType ev))
-> Tracers
     RemoteAddress
     NodeToNodeVersion
     NodeToNodeVersionData
     LocalAddress
     NodeToClientVersion
     NodeToClientVersionData
     NoExtraState
     NoExtraDebugState
     NoExtraFlags
     NoExtraPeers
     NoExtraCounters
     m
dmqDiffusionTracers
    Configuration {
      dmqcMuxTracer :: forall (f :: * -> *). Configuration' f -> f Bool
dmqcMuxTracer                                  = I Bool
muxTracer,
      dmqcChannelTracer :: forall (f :: * -> *). Configuration' f -> f Bool
dmqcChannelTracer                              = I Bool
channelTracer,
      dmqcBearerTracer :: forall (f :: * -> *). Configuration' f -> f Bool
dmqcBearerTracer                               = I Bool
bearerTracer,
      dmqcHandshakeTracer :: forall (f :: * -> *). Configuration' f -> f Bool
dmqcHandshakeTracer                            = I Bool
handshakeTracer,
      dmqcLocalMuxTracer :: forall (f :: * -> *). Configuration' f -> f Bool
dmqcLocalMuxTracer                             = I Bool
localMuxTracer,
      dmqcLocalChannelTracer :: forall (f :: * -> *). Configuration' f -> f Bool
dmqcLocalChannelTracer                         = I Bool
localChannelTracer,
      dmqcLocalBearerTracer :: forall (f :: * -> *). Configuration' f -> f Bool
dmqcLocalBearerTracer                          = I Bool
localBearerTracer,
      dmqcLocalHandshakeTracer :: forall (f :: * -> *). Configuration' f -> f Bool
dmqcLocalHandshakeTracer                       = I Bool
localHandshakeTracer,
      dmqcDiffusionTracer :: forall (f :: * -> *). Configuration' f -> f Bool
dmqcDiffusionTracer                            = I Bool
diffusionTracer,
      dmqcTraceLocalRootPeersTracer :: forall (f :: * -> *). Configuration' f -> f Bool
dmqcTraceLocalRootPeersTracer                  = I Bool
traceLocalRootPeersTracer,
      dmqcTracePublicRootPeersTracer :: forall (f :: * -> *). Configuration' f -> f Bool
dmqcTracePublicRootPeersTracer                 = I Bool
tracePublicRootPeersTracer,
      dmqcTraceLedgerPeersTracer :: forall (f :: * -> *). Configuration' f -> f Bool
dmqcTraceLedgerPeersTracer                     = I Bool
traceLedgerPeersTracer,
      dmqcTracePeerSelectionTracer :: forall (f :: * -> *). Configuration' f -> f Bool
dmqcTracePeerSelectionTracer                   = I Bool
tracePeerSelectionTracer,
      dmqcTraceChurnCounters :: forall (f :: * -> *). Configuration' f -> f Bool
dmqcTraceChurnCounters                         = I Bool
traceChurnCounters,
      dmqcDebugPeerSelectionInitiatorTracer :: forall (f :: * -> *). Configuration' f -> f Bool
dmqcDebugPeerSelectionInitiatorTracer          = I Bool
debugPeerSelectionInitiatorTracer,
      dmqcDebugPeerSelectionInitiatorResponderTracer :: forall (f :: * -> *). Configuration' f -> f Bool
dmqcDebugPeerSelectionInitiatorResponderTracer = I Bool
debugPeerSelectionInitiatorResponderTracer,
      dmqcTracePeerSelectionCounters :: forall (f :: * -> *). Configuration' f -> f Bool
dmqcTracePeerSelectionCounters                 = I Bool
tracePeerSelectionCounters,
      dmqcPeerSelectionActionsTracer :: forall (f :: * -> *). Configuration' f -> f Bool
dmqcPeerSelectionActionsTracer                 = I Bool
peerSelectionActionsTracer,
      dmqcConnectionManagerTracer :: forall (f :: * -> *). Configuration' f -> f Bool
dmqcConnectionManagerTracer                    = I Bool
connectionManagerTracer,
      dmqcConnectionManagerTransitionTracer :: forall (f :: * -> *). Configuration' f -> f Bool
dmqcConnectionManagerTransitionTracer          = I Bool
connectionManagerTransitionTracer,
      dmqcServerTracer :: forall (f :: * -> *). Configuration' f -> f Bool
dmqcServerTracer                               = I Bool
serverTracer,
      dmqcInboundGovernorTracer :: forall (f :: * -> *). Configuration' f -> f Bool
dmqcInboundGovernorTracer                      = I Bool
inboundGovernorTracer,
      dmqcInboundGovernorTransitionTracer :: forall (f :: * -> *). Configuration' f -> f Bool
dmqcInboundGovernorTransitionTracer            = I Bool
inboundGovernorTransitionTracer,
      dmqcLocalConnectionManagerTracer :: forall (f :: * -> *). Configuration' f -> f Bool
dmqcLocalConnectionManagerTracer               = I Bool
localConnectionManagerTracer,
      dmqcLocalServerTracer :: forall (f :: * -> *). Configuration' f -> f Bool
dmqcLocalServerTracer                          = I Bool
localServerTracer,
      dmqcLocalInboundGovernorTracer :: forall (f :: * -> *). Configuration' f -> f Bool
dmqcLocalInboundGovernorTracer                 = I Bool
localInboundGovernorTracer,
      dmqcDnsTracer :: forall (f :: * -> *). Configuration' f -> f Bool
dmqcDnsTracer                                  = I Bool
dnsTracer
    }
    forall ev. ToJSON ev => Tracer m (WithEventType ev)
tracer
  = Diffusion.Tracers {
    dtMuxTracer :: Tracer m (WithBearer (ConnectionId RemoteAddress) Trace)
Diffusion.dtMuxTracer                                  = Bool
muxTracer
                                                          Bool
-> Tracer m (WithBearer (ConnectionId RemoteAddress) Trace)
-> Tracer m (WithBearer (ConnectionId RemoteAddress) Trace)
forall a. Bool -> Tracer m a -> Tracer m a
.- String
-> WithBearer (ConnectionId RemoteAddress) Trace
-> WithEventType (WithBearer (ConnectionId RemoteAddress) Trace)
forall a. String -> a -> WithEventType a
WithEventType String
"Mux" (WithBearer (ConnectionId RemoteAddress) Trace
 -> WithEventType (WithBearer (ConnectionId RemoteAddress) Trace))
-> Tracer
     m (WithEventType (WithBearer (ConnectionId RemoteAddress) Trace))
-> Tracer m (WithBearer (ConnectionId RemoteAddress) Trace)
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Tracer
  m (WithEventType (WithBearer (ConnectionId RemoteAddress) Trace))
forall ev. ToJSON ev => Tracer m (WithEventType ev)
tracer,
    dtChannelTracer :: Tracer m (WithBearer (ConnectionId RemoteAddress) ChannelTrace)
Diffusion.dtChannelTracer                              = Bool
channelTracer
                                                          Bool
-> Tracer m (WithBearer (ConnectionId RemoteAddress) ChannelTrace)
-> Tracer m (WithBearer (ConnectionId RemoteAddress) ChannelTrace)
forall a. Bool -> Tracer m a -> Tracer m a
.- String
-> WithBearer (ConnectionId RemoteAddress) ChannelTrace
-> WithEventType
     (WithBearer (ConnectionId RemoteAddress) ChannelTrace)
forall a. String -> a -> WithEventType a
WithEventType String
"Channel" (WithBearer (ConnectionId RemoteAddress) ChannelTrace
 -> WithEventType
      (WithBearer (ConnectionId RemoteAddress) ChannelTrace))
-> Tracer
     m
     (WithEventType
        (WithBearer (ConnectionId RemoteAddress) ChannelTrace))
-> Tracer m (WithBearer (ConnectionId RemoteAddress) ChannelTrace)
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Tracer
  m
  (WithEventType
     (WithBearer (ConnectionId RemoteAddress) ChannelTrace))
forall ev. ToJSON ev => Tracer m (WithEventType ev)
tracer,
    dtBearerTracer :: Tracer m (WithBearer (ConnectionId RemoteAddress) BearerTrace)
Diffusion.dtBearerTracer                               = Bool
bearerTracer
                                                          Bool
-> Tracer m (WithBearer (ConnectionId RemoteAddress) BearerTrace)
-> Tracer m (WithBearer (ConnectionId RemoteAddress) BearerTrace)
forall a. Bool -> Tracer m a -> Tracer m a
.- String
-> WithBearer (ConnectionId RemoteAddress) BearerTrace
-> WithEventType
     (WithBearer (ConnectionId RemoteAddress) BearerTrace)
forall a. String -> a -> WithEventType a
WithEventType String
"Bearer" (WithBearer (ConnectionId RemoteAddress) BearerTrace
 -> WithEventType
      (WithBearer (ConnectionId RemoteAddress) BearerTrace))
-> Tracer
     m
     (WithEventType
        (WithBearer (ConnectionId RemoteAddress) BearerTrace))
-> Tracer m (WithBearer (ConnectionId RemoteAddress) BearerTrace)
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Tracer
  m
  (WithEventType
     (WithBearer (ConnectionId RemoteAddress) BearerTrace))
forall ev. ToJSON ev => Tracer m (WithEventType ev)
tracer,
    dtHandshakeTracer :: Tracer
  m
  (WithBearer
     (ConnectionId RemoteAddress)
     (TraceSendRecv (Handshake NodeToNodeVersion Term)))
Diffusion.dtHandshakeTracer                            = Bool
handshakeTracer
                                                          Bool
-> Tracer
     m
     (WithBearer
        (ConnectionId RemoteAddress)
        (TraceSendRecv (Handshake NodeToNodeVersion Term)))
-> Tracer
     m
     (WithBearer
        (ConnectionId RemoteAddress)
        (TraceSendRecv (Handshake NodeToNodeVersion Term)))
forall a. Bool -> Tracer m a -> Tracer m a
.- String
-> WithBearer
     (ConnectionId RemoteAddress)
     (TraceSendRecv (Handshake NodeToNodeVersion Term))
-> WithEventType
     (WithBearer
        (ConnectionId RemoteAddress)
        (TraceSendRecv (Handshake NodeToNodeVersion Term)))
forall a. String -> a -> WithEventType a
WithEventType String
"Handshake" (WithBearer
   (ConnectionId RemoteAddress)
   (TraceSendRecv (Handshake NodeToNodeVersion Term))
 -> WithEventType
      (WithBearer
         (ConnectionId RemoteAddress)
         (TraceSendRecv (Handshake NodeToNodeVersion Term))))
-> Tracer
     m
     (WithEventType
        (WithBearer
           (ConnectionId RemoteAddress)
           (TraceSendRecv (Handshake NodeToNodeVersion Term))))
-> Tracer
     m
     (WithBearer
        (ConnectionId RemoteAddress)
        (TraceSendRecv (Handshake NodeToNodeVersion Term)))
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Tracer
  m
  (WithEventType
     (WithBearer
        (ConnectionId RemoteAddress)
        (TraceSendRecv (Handshake NodeToNodeVersion Term))))
forall ev. ToJSON ev => Tracer m (WithEventType ev)
tracer,
    dtLocalMuxTracer :: Tracer m (WithBearer (ConnectionId LocalAddress) Trace)
Diffusion.dtLocalMuxTracer                             = Bool
localMuxTracer
                                                          Bool
-> Tracer m (WithBearer (ConnectionId LocalAddress) Trace)
-> Tracer m (WithBearer (ConnectionId LocalAddress) Trace)
forall a. Bool -> Tracer m a -> Tracer m a
.- String
-> WithBearer (ConnectionId LocalAddress) Trace
-> WithEventType (WithBearer (ConnectionId LocalAddress) Trace)
forall a. String -> a -> WithEventType a
WithEventType String
"LocalMux" (WithBearer (ConnectionId LocalAddress) Trace
 -> WithEventType (WithBearer (ConnectionId LocalAddress) Trace))
-> Tracer
     m (WithEventType (WithBearer (ConnectionId LocalAddress) Trace))
-> Tracer m (WithBearer (ConnectionId LocalAddress) Trace)
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Tracer
  m (WithEventType (WithBearer (ConnectionId LocalAddress) Trace))
forall ev. ToJSON ev => Tracer m (WithEventType ev)
tracer,
    dtLocalChannelTracer :: Tracer m (WithBearer (ConnectionId LocalAddress) ChannelTrace)
Diffusion.dtLocalChannelTracer                         = Bool
localChannelTracer
                                                          Bool
-> Tracer m (WithBearer (ConnectionId LocalAddress) ChannelTrace)
-> Tracer m (WithBearer (ConnectionId LocalAddress) ChannelTrace)
forall a. Bool -> Tracer m a -> Tracer m a
.- String
-> WithBearer (ConnectionId LocalAddress) ChannelTrace
-> WithEventType
     (WithBearer (ConnectionId LocalAddress) ChannelTrace)
forall a. String -> a -> WithEventType a
WithEventType String
"LocalChannel" (WithBearer (ConnectionId LocalAddress) ChannelTrace
 -> WithEventType
      (WithBearer (ConnectionId LocalAddress) ChannelTrace))
-> Tracer
     m
     (WithEventType
        (WithBearer (ConnectionId LocalAddress) ChannelTrace))
-> Tracer m (WithBearer (ConnectionId LocalAddress) ChannelTrace)
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Tracer
  m
  (WithEventType
     (WithBearer (ConnectionId LocalAddress) ChannelTrace))
forall ev. ToJSON ev => Tracer m (WithEventType ev)
tracer,
    dtLocalBearerTracer :: Tracer m (WithBearer (ConnectionId LocalAddress) BearerTrace)
Diffusion.dtLocalBearerTracer                          = Bool
localBearerTracer
                                                          Bool
-> Tracer m (WithBearer (ConnectionId LocalAddress) BearerTrace)
-> Tracer m (WithBearer (ConnectionId LocalAddress) BearerTrace)
forall a. Bool -> Tracer m a -> Tracer m a
.- String
-> WithBearer (ConnectionId LocalAddress) BearerTrace
-> WithEventType
     (WithBearer (ConnectionId LocalAddress) BearerTrace)
forall a. String -> a -> WithEventType a
WithEventType String
"LocalBearer" (WithBearer (ConnectionId LocalAddress) BearerTrace
 -> WithEventType
      (WithBearer (ConnectionId LocalAddress) BearerTrace))
-> Tracer
     m
     (WithEventType
        (WithBearer (ConnectionId LocalAddress) BearerTrace))
-> Tracer m (WithBearer (ConnectionId LocalAddress) BearerTrace)
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Tracer
  m
  (WithEventType
     (WithBearer (ConnectionId LocalAddress) BearerTrace))
forall ev. ToJSON ev => Tracer m (WithEventType ev)
tracer,
    dtLocalHandshakeTracer :: Tracer
  m
  (WithBearer
     (ConnectionId LocalAddress)
     (TraceSendRecv (Handshake NodeToClientVersion Term)))
Diffusion.dtLocalHandshakeTracer                       = Bool
localHandshakeTracer
                                                          Bool
-> Tracer
     m
     (WithBearer
        (ConnectionId LocalAddress)
        (TraceSendRecv (Handshake NodeToClientVersion Term)))
-> Tracer
     m
     (WithBearer
        (ConnectionId LocalAddress)
        (TraceSendRecv (Handshake NodeToClientVersion Term)))
forall a. Bool -> Tracer m a -> Tracer m a
.- String
-> WithBearer
     (ConnectionId LocalAddress)
     (TraceSendRecv (Handshake NodeToClientVersion Term))
-> WithEventType
     (WithBearer
        (ConnectionId LocalAddress)
        (TraceSendRecv (Handshake NodeToClientVersion Term)))
forall a. String -> a -> WithEventType a
WithEventType String
"LocalHandshake" (WithBearer
   (ConnectionId LocalAddress)
   (TraceSendRecv (Handshake NodeToClientVersion Term))
 -> WithEventType
      (WithBearer
         (ConnectionId LocalAddress)
         (TraceSendRecv (Handshake NodeToClientVersion Term))))
-> Tracer
     m
     (WithEventType
        (WithBearer
           (ConnectionId LocalAddress)
           (TraceSendRecv (Handshake NodeToClientVersion Term))))
-> Tracer
     m
     (WithBearer
        (ConnectionId LocalAddress)
        (TraceSendRecv (Handshake NodeToClientVersion Term)))
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Tracer
  m
  (WithEventType
     (WithBearer
        (ConnectionId LocalAddress)
        (TraceSendRecv (Handshake NodeToClientVersion Term))))
forall ev. ToJSON ev => Tracer m (WithEventType ev)
tracer,
    dtDiffusionTracer :: Tracer m (DiffusionTracer RemoteAddress LocalAddress)
Diffusion.dtDiffusionTracer                            = Bool
diffusionTracer
                                                          Bool
-> Tracer m (DiffusionTracer RemoteAddress LocalAddress)
-> Tracer m (DiffusionTracer RemoteAddress LocalAddress)
forall a. Bool -> Tracer m a -> Tracer m a
.- String
-> DiffusionTracer RemoteAddress LocalAddress
-> WithEventType (DiffusionTracer RemoteAddress LocalAddress)
forall a. String -> a -> WithEventType a
WithEventType String
"Diffusion" (DiffusionTracer RemoteAddress LocalAddress
 -> WithEventType (DiffusionTracer RemoteAddress LocalAddress))
-> Tracer
     m (WithEventType (DiffusionTracer RemoteAddress LocalAddress))
-> Tracer m (DiffusionTracer RemoteAddress LocalAddress)
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Tracer
  m (WithEventType (DiffusionTracer RemoteAddress LocalAddress))
forall ev. ToJSON ev => Tracer m (WithEventType ev)
tracer,
    dtTraceLocalRootPeersTracer :: Tracer m (TraceLocalRootPeers NoExtraFlags RemoteAddress)
Diffusion.dtTraceLocalRootPeersTracer                  = Bool
traceLocalRootPeersTracer
                                                          Bool
-> Tracer m (TraceLocalRootPeers NoExtraFlags RemoteAddress)
-> Tracer m (TraceLocalRootPeers NoExtraFlags RemoteAddress)
forall a. Bool -> Tracer m a -> Tracer m a
.- String
-> TraceLocalRootPeers NoExtraFlags RemoteAddress
-> WithEventType (TraceLocalRootPeers NoExtraFlags RemoteAddress)
forall a. String -> a -> WithEventType a
WithEventType String
"LocalRootPeers" (TraceLocalRootPeers NoExtraFlags RemoteAddress
 -> WithEventType (TraceLocalRootPeers NoExtraFlags RemoteAddress))
-> Tracer
     m (WithEventType (TraceLocalRootPeers NoExtraFlags RemoteAddress))
-> Tracer m (TraceLocalRootPeers NoExtraFlags RemoteAddress)
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Tracer
  m (WithEventType (TraceLocalRootPeers NoExtraFlags RemoteAddress))
forall ev. ToJSON ev => Tracer m (WithEventType ev)
tracer,
    dtTracePublicRootPeersTracer :: Tracer m TracePublicRootPeers
Diffusion.dtTracePublicRootPeersTracer                 = Bool
tracePublicRootPeersTracer
                                                          Bool
-> Tracer m TracePublicRootPeers -> Tracer m TracePublicRootPeers
forall a. Bool -> Tracer m a -> Tracer m a
.- String
-> TracePublicRootPeers -> WithEventType TracePublicRootPeers
forall a. String -> a -> WithEventType a
WithEventType String
"PublicRootPeers" (TracePublicRootPeers -> WithEventType TracePublicRootPeers)
-> Tracer m (WithEventType TracePublicRootPeers)
-> Tracer m TracePublicRootPeers
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Tracer m (WithEventType TracePublicRootPeers)
forall ev. ToJSON ev => Tracer m (WithEventType ev)
tracer,
    dtTraceLedgerPeersTracer :: Tracer m TraceLedgerPeers
Diffusion.dtTraceLedgerPeersTracer                     = Bool
traceLedgerPeersTracer
                                                          Bool -> Tracer m TraceLedgerPeers -> Tracer m TraceLedgerPeers
forall a. Bool -> Tracer m a -> Tracer m a
.- String -> TraceLedgerPeers -> WithEventType TraceLedgerPeers
forall a. String -> a -> WithEventType a
WithEventType String
"LedgerPeers" (TraceLedgerPeers -> WithEventType TraceLedgerPeers)
-> Tracer m (WithEventType TraceLedgerPeers)
-> Tracer m TraceLedgerPeers
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Tracer m (WithEventType TraceLedgerPeers)
forall ev. ToJSON ev => Tracer m (WithEventType ev)
tracer,
    dtTracePeerSelectionTracer :: Tracer
  m
  (TracePeerSelection
     NoExtraDebugState NoExtraFlags NoExtraPeers RemoteAddress)
Diffusion.dtTracePeerSelectionTracer                   = Bool
tracePeerSelectionTracer
                                                          Bool
-> Tracer
     m
     (TracePeerSelection
        NoExtraDebugState NoExtraFlags NoExtraPeers RemoteAddress)
-> Tracer
     m
     (TracePeerSelection
        NoExtraDebugState NoExtraFlags NoExtraPeers RemoteAddress)
forall a. Bool -> Tracer m a -> Tracer m a
.- String
-> TracePeerSelection
     NoExtraDebugState NoExtraFlags NoExtraPeers RemoteAddress
-> WithEventType
     (TracePeerSelection
        NoExtraDebugState NoExtraFlags NoExtraPeers RemoteAddress)
forall a. String -> a -> WithEventType a
WithEventType String
"PeerSelection" (TracePeerSelection
   NoExtraDebugState NoExtraFlags NoExtraPeers RemoteAddress
 -> WithEventType
      (TracePeerSelection
         NoExtraDebugState NoExtraFlags NoExtraPeers RemoteAddress))
-> Tracer
     m
     (WithEventType
        (TracePeerSelection
           NoExtraDebugState NoExtraFlags NoExtraPeers RemoteAddress))
-> Tracer
     m
     (TracePeerSelection
        NoExtraDebugState NoExtraFlags NoExtraPeers RemoteAddress)
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Tracer
  m
  (WithEventType
     (TracePeerSelection
        NoExtraDebugState NoExtraFlags NoExtraPeers RemoteAddress))
forall ev. ToJSON ev => Tracer m (WithEventType ev)
tracer,
    dtDebugPeerSelectionInitiatorTracer :: Tracer
  m
  (DebugPeerSelection
     NoExtraState NoExtraFlags NoExtraPeers RemoteAddress)
Diffusion.dtDebugPeerSelectionInitiatorTracer          = Bool
debugPeerSelectionInitiatorTracer
                                                          Bool
-> Tracer
     m
     (DebugPeerSelection
        NoExtraState NoExtraFlags NoExtraPeers RemoteAddress)
-> Tracer
     m
     (DebugPeerSelection
        NoExtraState NoExtraFlags NoExtraPeers RemoteAddress)
forall a. Bool -> Tracer m a -> Tracer m a
.- String
-> DebugPeerSelection
     NoExtraState NoExtraFlags NoExtraPeers RemoteAddress
-> WithEventType
     (DebugPeerSelection
        NoExtraState NoExtraFlags NoExtraPeers RemoteAddress)
forall a. String -> a -> WithEventType a
WithEventType String
"DebugPeerSelectionInitiator" (DebugPeerSelection
   NoExtraState NoExtraFlags NoExtraPeers RemoteAddress
 -> WithEventType
      (DebugPeerSelection
         NoExtraState NoExtraFlags NoExtraPeers RemoteAddress))
-> Tracer
     m
     (WithEventType
        (DebugPeerSelection
           NoExtraState NoExtraFlags NoExtraPeers RemoteAddress))
-> Tracer
     m
     (DebugPeerSelection
        NoExtraState NoExtraFlags NoExtraPeers RemoteAddress)
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Tracer
  m
  (WithEventType
     (DebugPeerSelection
        NoExtraState NoExtraFlags NoExtraPeers RemoteAddress))
forall ev. ToJSON ev => Tracer m (WithEventType ev)
tracer,
    dtDebugPeerSelectionInitiatorResponderTracer :: Tracer
  m
  (DebugPeerSelection
     NoExtraState NoExtraFlags NoExtraPeers RemoteAddress)
Diffusion.dtDebugPeerSelectionInitiatorResponderTracer = Bool
debugPeerSelectionInitiatorResponderTracer
                                                          Bool
-> Tracer
     m
     (DebugPeerSelection
        NoExtraState NoExtraFlags NoExtraPeers RemoteAddress)
-> Tracer
     m
     (DebugPeerSelection
        NoExtraState NoExtraFlags NoExtraPeers RemoteAddress)
forall a. Bool -> Tracer m a -> Tracer m a
.- String
-> DebugPeerSelection
     NoExtraState NoExtraFlags NoExtraPeers RemoteAddress
-> WithEventType
     (DebugPeerSelection
        NoExtraState NoExtraFlags NoExtraPeers RemoteAddress)
forall a. String -> a -> WithEventType a
WithEventType String
"DebugPeerSelectionInitiatorResponder" (DebugPeerSelection
   NoExtraState NoExtraFlags NoExtraPeers RemoteAddress
 -> WithEventType
      (DebugPeerSelection
         NoExtraState NoExtraFlags NoExtraPeers RemoteAddress))
-> Tracer
     m
     (WithEventType
        (DebugPeerSelection
           NoExtraState NoExtraFlags NoExtraPeers RemoteAddress))
-> Tracer
     m
     (DebugPeerSelection
        NoExtraState NoExtraFlags NoExtraPeers RemoteAddress)
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Tracer
  m
  (WithEventType
     (DebugPeerSelection
        NoExtraState NoExtraFlags NoExtraPeers RemoteAddress))
forall ev. ToJSON ev => Tracer m (WithEventType ev)
tracer,
    dtTracePeerSelectionCounters :: Tracer m (PeerSelectionCounters NoExtraCounters)
Diffusion.dtTracePeerSelectionCounters                 = Bool
tracePeerSelectionCounters
                                                          Bool
-> Tracer m (PeerSelectionCounters NoExtraCounters)
-> Tracer m (PeerSelectionCounters NoExtraCounters)
forall a. Bool -> Tracer m a -> Tracer m a
.- String
-> PeerSelectionCounters NoExtraCounters
-> WithEventType (PeerSelectionCounters NoExtraCounters)
forall a. String -> a -> WithEventType a
WithEventType String
"PeerSelectionCounters" (PeerSelectionCounters NoExtraCounters
 -> WithEventType (PeerSelectionCounters NoExtraCounters))
-> Tracer m (WithEventType (PeerSelectionCounters NoExtraCounters))
-> Tracer m (PeerSelectionCounters NoExtraCounters)
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Tracer m (WithEventType (PeerSelectionCounters NoExtraCounters))
forall ev. ToJSON ev => Tracer m (WithEventType ev)
tracer,
    dtTraceChurnCounters :: Tracer m ChurnCounters
Diffusion.dtTraceChurnCounters                         = Bool
traceChurnCounters
                                                          Bool -> Tracer m ChurnCounters -> Tracer m ChurnCounters
forall a. Bool -> Tracer m a -> Tracer m a
.- String -> ChurnCounters -> WithEventType ChurnCounters
forall a. String -> a -> WithEventType a
WithEventType String
"ChurnCounters" (ChurnCounters -> WithEventType ChurnCounters)
-> Tracer m (WithEventType ChurnCounters) -> Tracer m ChurnCounters
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Tracer m (WithEventType ChurnCounters)
forall ev. ToJSON ev => Tracer m (WithEventType ev)
tracer,
    dtPeerSelectionActionsTracer :: Tracer
  m (PeerSelectionActionsTrace RemoteAddress NodeToNodeVersion)
Diffusion.dtPeerSelectionActionsTracer                 = Bool
peerSelectionActionsTracer
                                                          Bool
-> Tracer
     m (PeerSelectionActionsTrace RemoteAddress NodeToNodeVersion)
-> Tracer
     m (PeerSelectionActionsTrace RemoteAddress NodeToNodeVersion)
forall a. Bool -> Tracer m a -> Tracer m a
.- String
-> PeerSelectionActionsTrace RemoteAddress NodeToNodeVersion
-> WithEventType
     (PeerSelectionActionsTrace RemoteAddress NodeToNodeVersion)
forall a. String -> a -> WithEventType a
WithEventType String
"PeerSelectionActions" (PeerSelectionActionsTrace RemoteAddress NodeToNodeVersion
 -> WithEventType
      (PeerSelectionActionsTrace RemoteAddress NodeToNodeVersion))
-> Tracer
     m
     (WithEventType
        (PeerSelectionActionsTrace RemoteAddress NodeToNodeVersion))
-> Tracer
     m (PeerSelectionActionsTrace RemoteAddress NodeToNodeVersion)
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Tracer
  m
  (WithEventType
     (PeerSelectionActionsTrace RemoteAddress NodeToNodeVersion))
forall ev. ToJSON ev => Tracer m (WithEventType ev)
tracer,
    dtConnectionManagerTracer :: Tracer
  m
  (Trace
     RemoteAddress
     (ConnectionHandlerTrace NodeToNodeVersion NodeToNodeVersionData))
Diffusion.dtConnectionManagerTracer                    = Bool
connectionManagerTracer
                                                          Bool
-> Tracer
     m
     (Trace
        RemoteAddress
        (ConnectionHandlerTrace NodeToNodeVersion NodeToNodeVersionData))
-> Tracer
     m
     (Trace
        RemoteAddress
        (ConnectionHandlerTrace NodeToNodeVersion NodeToNodeVersionData))
forall a. Bool -> Tracer m a -> Tracer m a
.- String
-> Trace
     RemoteAddress
     (ConnectionHandlerTrace NodeToNodeVersion NodeToNodeVersionData)
-> WithEventType
     (Trace
        RemoteAddress
        (ConnectionHandlerTrace NodeToNodeVersion NodeToNodeVersionData))
forall a. String -> a -> WithEventType a
WithEventType String
"ConnectionManager" (Trace
   RemoteAddress
   (ConnectionHandlerTrace NodeToNodeVersion NodeToNodeVersionData)
 -> WithEventType
      (Trace
         RemoteAddress
         (ConnectionHandlerTrace NodeToNodeVersion NodeToNodeVersionData)))
-> Tracer
     m
     (WithEventType
        (Trace
           RemoteAddress
           (ConnectionHandlerTrace NodeToNodeVersion NodeToNodeVersionData)))
-> Tracer
     m
     (Trace
        RemoteAddress
        (ConnectionHandlerTrace NodeToNodeVersion NodeToNodeVersionData))
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Tracer
  m
  (WithEventType
     (Trace
        RemoteAddress
        (ConnectionHandlerTrace NodeToNodeVersion NodeToNodeVersionData)))
forall ev. ToJSON ev => Tracer m (WithEventType ev)
tracer,
    dtConnectionManagerTransitionTracer :: Tracer m (AbstractTransitionTrace ConnStateId)
Diffusion.dtConnectionManagerTransitionTracer          = Bool
connectionManagerTransitionTracer
                                                          Bool
-> Tracer m (AbstractTransitionTrace ConnStateId)
-> Tracer m (AbstractTransitionTrace ConnStateId)
forall a. Bool -> Tracer m a -> Tracer m a
.- String
-> AbstractTransitionTrace ConnStateId
-> WithEventType (AbstractTransitionTrace ConnStateId)
forall a. String -> a -> WithEventType a
WithEventType String
"ConnectionManagerTransition" (AbstractTransitionTrace ConnStateId
 -> WithEventType (AbstractTransitionTrace ConnStateId))
-> Tracer m (WithEventType (AbstractTransitionTrace ConnStateId))
-> Tracer m (AbstractTransitionTrace ConnStateId)
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Tracer m (WithEventType (AbstractTransitionTrace ConnStateId))
forall ev. ToJSON ev => Tracer m (WithEventType ev)
tracer,
    dtServerTracer :: Tracer m (Trace RemoteAddress)
Diffusion.dtServerTracer                               = Bool
serverTracer
                                                          Bool
-> Tracer m (Trace RemoteAddress) -> Tracer m (Trace RemoteAddress)
forall a. Bool -> Tracer m a -> Tracer m a
.- String
-> Trace RemoteAddress -> WithEventType (Trace RemoteAddress)
forall a. String -> a -> WithEventType a
WithEventType String
"Server" (Trace RemoteAddress -> WithEventType (Trace RemoteAddress))
-> Tracer m (WithEventType (Trace RemoteAddress))
-> Tracer m (Trace RemoteAddress)
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Tracer m (WithEventType (Trace RemoteAddress))
forall ev. ToJSON ev => Tracer m (WithEventType ev)
tracer,
    dtInboundGovernorTracer :: Tracer m (Trace RemoteAddress)
Diffusion.dtInboundGovernorTracer                      = Bool
inboundGovernorTracer
                                                          Bool
-> Tracer m (Trace RemoteAddress) -> Tracer m (Trace RemoteAddress)
forall a. Bool -> Tracer m a -> Tracer m a
.- String
-> Trace RemoteAddress -> WithEventType (Trace RemoteAddress)
forall a. String -> a -> WithEventType a
WithEventType String
"InboundGovernor" (Trace RemoteAddress -> WithEventType (Trace RemoteAddress))
-> Tracer m (WithEventType (Trace RemoteAddress))
-> Tracer m (Trace RemoteAddress)
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Tracer m (WithEventType (Trace RemoteAddress))
forall ev. ToJSON ev => Tracer m (WithEventType ev)
tracer,
    dtInboundGovernorTransitionTracer :: Tracer m (RemoteTransitionTrace RemoteAddress)
Diffusion.dtInboundGovernorTransitionTracer            = Bool
inboundGovernorTransitionTracer
                                                          Bool
-> Tracer m (RemoteTransitionTrace RemoteAddress)
-> Tracer m (RemoteTransitionTrace RemoteAddress)
forall a. Bool -> Tracer m a -> Tracer m a
.- String
-> RemoteTransitionTrace RemoteAddress
-> WithEventType (RemoteTransitionTrace RemoteAddress)
forall a. String -> a -> WithEventType a
WithEventType String
"InboundGovernorTransition" (RemoteTransitionTrace RemoteAddress
 -> WithEventType (RemoteTransitionTrace RemoteAddress))
-> Tracer m (WithEventType (RemoteTransitionTrace RemoteAddress))
-> Tracer m (RemoteTransitionTrace RemoteAddress)
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Tracer m (WithEventType (RemoteTransitionTrace RemoteAddress))
forall ev. ToJSON ev => Tracer m (WithEventType ev)
tracer,
    dtDnsTracer :: Tracer m DNSTrace
Diffusion.dtDnsTracer                                  = Bool
dnsTracer
                                                          Bool -> Tracer m DNSTrace -> Tracer m DNSTrace
forall a. Bool -> Tracer m a -> Tracer m a
.- String -> DNSTrace -> WithEventType DNSTrace
forall a. String -> a -> WithEventType a
WithEventType String
"dtDnsTracer" (DNSTrace -> WithEventType DNSTrace)
-> Tracer m (WithEventType DNSTrace) -> Tracer m DNSTrace
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Tracer m (WithEventType DNSTrace)
forall ev. ToJSON ev => Tracer m (WithEventType ev)
tracer,
    dtLocalConnectionManagerTracer :: Tracer
  m
  (Trace
     LocalAddress
     (ConnectionHandlerTrace
        NodeToClientVersion NodeToClientVersionData))
Diffusion.dtLocalConnectionManagerTracer               = Bool
localConnectionManagerTracer
                                                          Bool
-> Tracer
     m
     (Trace
        LocalAddress
        (ConnectionHandlerTrace
           NodeToClientVersion NodeToClientVersionData))
-> Tracer
     m
     (Trace
        LocalAddress
        (ConnectionHandlerTrace
           NodeToClientVersion NodeToClientVersionData))
forall a. Bool -> Tracer m a -> Tracer m a
.- String
-> Trace
     LocalAddress
     (ConnectionHandlerTrace
        NodeToClientVersion NodeToClientVersionData)
-> WithEventType
     (Trace
        LocalAddress
        (ConnectionHandlerTrace
           NodeToClientVersion NodeToClientVersionData))
forall a. String -> a -> WithEventType a
WithEventType String
"dtLocalConnectionManagerTracer" (Trace
   LocalAddress
   (ConnectionHandlerTrace
      NodeToClientVersion NodeToClientVersionData)
 -> WithEventType
      (Trace
         LocalAddress
         (ConnectionHandlerTrace
            NodeToClientVersion NodeToClientVersionData)))
-> Tracer
     m
     (WithEventType
        (Trace
           LocalAddress
           (ConnectionHandlerTrace
              NodeToClientVersion NodeToClientVersionData)))
-> Tracer
     m
     (Trace
        LocalAddress
        (ConnectionHandlerTrace
           NodeToClientVersion NodeToClientVersionData))
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Tracer
  m
  (WithEventType
     (Trace
        LocalAddress
        (ConnectionHandlerTrace
           NodeToClientVersion NodeToClientVersionData)))
forall ev. ToJSON ev => Tracer m (WithEventType ev)
tracer,
    dtLocalServerTracer :: Tracer m (Trace LocalAddress)
Diffusion.dtLocalServerTracer                          = Bool
localServerTracer
                                                          Bool
-> Tracer m (Trace LocalAddress) -> Tracer m (Trace LocalAddress)
forall a. Bool -> Tracer m a -> Tracer m a
.- String -> Trace LocalAddress -> WithEventType (Trace LocalAddress)
forall a. String -> a -> WithEventType a
WithEventType String
"dtLocalServerTracer" (Trace LocalAddress -> WithEventType (Trace LocalAddress))
-> Tracer m (WithEventType (Trace LocalAddress))
-> Tracer m (Trace LocalAddress)
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Tracer m (WithEventType (Trace LocalAddress))
forall ev. ToJSON ev => Tracer m (WithEventType ev)
tracer,
    dtLocalInboundGovernorTracer :: Tracer m (Trace LocalAddress)
Diffusion.dtLocalInboundGovernorTracer                 = Bool
localInboundGovernorTracer
                                                          Bool
-> Tracer m (Trace LocalAddress) -> Tracer m (Trace LocalAddress)
forall a. Bool -> Tracer m a -> Tracer m a
.- String -> Trace LocalAddress -> WithEventType (Trace LocalAddress)
forall a. String -> a -> WithEventType a
WithEventType String
"dtLocalInboundGovernorTracer" (Trace LocalAddress -> WithEventType (Trace LocalAddress))
-> Tracer m (WithEventType (Trace LocalAddress))
-> Tracer m (Trace LocalAddress)
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Tracer m (WithEventType (Trace LocalAddress))
forall ev. ToJSON ev => Tracer m (WithEventType ev)
tracer
  }
  where
    (.-) :: Bool -> Tracer m a -> Tracer m a
    Bool
True  .- :: forall a. Bool -> Tracer m a -> Tracer m a
.- Tracer m a
a = Tracer m a
a
    Bool
False .- Tracer m a
_ = Tracer m a
forall (m :: * -> *) a. Applicative m => Tracer m a
nullTracer
    infixl 3 .-