{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PackageImports    #-}
{-# LANGUAGE RecordWildCards   #-}

--------------------------------------------------------------------------------

-- Orphan instances module for Cardano tracer.
{-# OPTIONS_GHC -Wno-orphans #-}
-- Extracted from "cardano-node" `Cardano.Node.Tracing.Tracers.P2P`.
-- Branch "master" (2026-02-11, 85869e9dd21d9dac7c4381418346e97259c3303b).

{- TODO: All references to package "cardano-diffusion" were removed.
--       See all the TODO annotations.
import           "cardano-diffusion" -- "cardano-diffusion:???"
  Cardano.Network.PeerSelection.Governor.Monitor
    ( ExtraTrace (TraceLedgerStateJudgementChanged, TraceUseBootstrapPeersChanged)
    )
--}

--------------------------------------------------------------------------------

module Ouroboros.Network.Tracing.PeerSelection.Governor.PeerSelectionCounters () where

--------------------------------------------------------------------------------

---------
-- base -
---------
--
---------------------
-- Package: "aeson" -
---------------------
import "aeson" Data.Aeson (Value (String), (.=))
---------------------------------
-- Package: "ouroboros-network" -
---------------------------------
import "ouroboros-network" Ouroboros.Network.PeerSelection.Governor.Types
           (PeerSelectionCounters, PeerSelectionView (..))
--------------------------------
-- Package: "trace-dispatcher" -
--------------------------------
import "trace-dispatcher" Cardano.Logging

--------------------------------------------------------------------------------
-- PeerSelectionCounters
--------------------------------------------------------------------------------

{-- TODO: Before "cardano-diffusion" removal:
instance LogFormatting (PeerSelectionCounters (Cardano.ExtraPeerSelectionSetsWithSizes addr)) where
--}
instance LogFormatting (PeerSelectionCounters extraCounters) where
  forMachine :: DetailLevel -> PeerSelectionCounters extraCounters -> Object
forMachine DetailLevel
_dtal PeerSelectionCounters {extraCounters
Int
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 :: extraCounters
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
..} =
    [Object] -> Object
forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" Key -> Value -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PeerSelectionCounters"

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

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

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

            , Key
"knownNonRootPeers" Key -> Int -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfKnownNonRootPeers
            , Key
"coldNonRootPeersPromotions" Key -> Int -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfColdNonRootPeersPromotions
            , Key
"establishedNonRootPeers" Key -> Int -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfEstablishedNonRootPeers
            , Key
"warmNonRootPeersDemotions" Key -> Int -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfWarmNonRootPeersDemotions
            , Key
"warmNonRootPeersPromotions" Key -> Int -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfWarmNonRootPeersPromotions
            , Key
"activeNonRootPeers" Key -> Int -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfActiveNonRootPeers
            , Key
"activeNonRootPeersDemotions" Key -> Int -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfActiveNonRootPeersDemotions
{-- TODO: Before "cardano-diffusion" removal:
            , "knownBootstrapPeers" .= snd (Cardano.viewKnownBootstrapPeers extraCounters)
            , "coldBootstrapPeersPromotions" .= snd (Cardano.viewColdBootstrapPeersPromotions extraCounters)
            , "establishedBootstrapPeers" .= snd (Cardano.viewEstablishedBootstrapPeers extraCounters)
            , "warmBootstrapPeersDemotions" .= snd (Cardano.viewWarmBootstrapPeersDemotions extraCounters)
            , "warmBootstrapPeersPromotions" .= snd (Cardano.viewWarmBootstrapPeersPromotions extraCounters)
            , "activeBootstrapPeers" .= snd (Cardano.viewActiveBootstrapPeers extraCounters)
            , "ActiveBootstrapPeersDemotions" .= snd (Cardano.viewActiveBootstrapPeersDemotions extraCounters)
--}
            ]
  asMetrics :: PeerSelectionCounters extraCounters -> [Metric]
asMetrics PeerSelectionCounters extraCounters
psc =
    case PeerSelectionCounters extraCounters
psc of
      PeerSelectionCountersHWC {Int
numberOfColdPeers :: Int
numberOfWarmPeers :: Int
numberOfHotPeers :: Int
numberOfColdBigLedgerPeers :: Int
numberOfWarmBigLedgerPeers :: Int
numberOfHotBigLedgerPeers :: Int
numberOfColdLocalRootPeers :: Int
numberOfWarmLocalRootPeers :: Int
numberOfHotLocalRootPeers :: Int
numberOfColdBigLedgerPeers :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfColdLocalRootPeers :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfColdPeers :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfHotBigLedgerPeers :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfHotLocalRootPeers :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfHotPeers :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfWarmBigLedgerPeers :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfWarmLocalRootPeers :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfWarmPeers :: forall extraCounters. PeerSelectionCounters extraCounters -> Int
..} ->
        -- Deprecated metrics; they will be removed in a future version.
        [ Text -> Integer -> Metric
IntM
            Text
"peerSelection.Cold"
            (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfColdPeers)
        , Text -> Integer -> Metric
IntM
            Text
"peerSelection.Warm"
            (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfWarmPeers)
        , Text -> Integer -> Metric
IntM
            Text
"peerSelection.Hot"
            (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfHotPeers)
        , Text -> Integer -> Metric
IntM
            Text
"peerSelection.ColdBigLedgerPeers"
            (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfColdBigLedgerPeers)
        , Text -> Integer -> Metric
IntM
            Text
"peerSelection.WarmBigLedgerPeers"
            (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfWarmBigLedgerPeers)
        , Text -> Integer -> Metric
IntM
            Text
"peerSelection.HotBigLedgerPeers"
            (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfHotBigLedgerPeers)

        , Text -> Integer -> Metric
IntM
            Text
"peerSelection.WarmLocalRoots"
            (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Integer) -> Int -> Integer
forall a b. (a -> b) -> a -> b
$ PeerSelectionCounters extraCounters -> Int
forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfActiveLocalRootPeers PeerSelectionCounters extraCounters
psc)
        , Text -> Integer -> Metric
IntM
            Text
"peerSelection.HotLocalRoots"
            (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Integer) -> Int -> Integer
forall a b. (a -> b) -> a -> b
$ PeerSelectionCounters extraCounters -> Int
forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfEstablishedLocalRootPeers PeerSelectionCounters extraCounters
psc
                          Int -> Int -> Int
forall a. Num a => a -> a -> a
- PeerSelectionCounters extraCounters -> Int
forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfActiveLocalRootPeers PeerSelectionCounters extraCounters
psc)
        ]
    [Metric] -> [Metric] -> [Metric]
forall a. [a] -> [a] -> [a]
++
    case PeerSelectionCounters extraCounters
psc of
      PeerSelectionCounters {extraCounters
Int
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
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 :: extraCounters
..} ->
        [ Text -> Integer -> Metric
IntM Text
"peerSelection.RootPeers" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfRootPeers)

        , Text -> Integer -> Metric
IntM Text
"peerSelection.KnownPeers" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfKnownPeers)
        , Text -> Integer -> Metric
IntM Text
"peerSelection.ColdPeersPromotions" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfColdPeersPromotions)
        , Text -> Integer -> Metric
IntM Text
"peerSelection.EstablishedPeers" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfEstablishedPeers)
        , Text -> Integer -> Metric
IntM Text
"peerSelection.WarmPeersDemotions" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfWarmPeersDemotions)
        , Text -> Integer -> Metric
IntM Text
"peerSelection.WarmPeersPromotions" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfWarmPeersPromotions)
        , Text -> Integer -> Metric
IntM Text
"peerSelection.ActivePeers" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfActivePeers)
        , Text -> Integer -> Metric
IntM Text
"peerSelection.ActivePeersDemotions" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfActivePeersDemotions)

        , Text -> Integer -> Metric
IntM Text
"peerSelection.KnownBigLedgerPeers" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfKnownBigLedgerPeers)
        , Text -> Integer -> Metric
IntM Text
"peerSelection.ColdBigLedgerPeersPromotions" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfColdBigLedgerPeersPromotions)
        , Text -> Integer -> Metric
IntM Text
"peerSelection.EstablishedBigLedgerPeers" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfEstablishedBigLedgerPeers)
        , Text -> Integer -> Metric
IntM Text
"peerSelection.WarmBigLedgerPeersDemotions" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfWarmBigLedgerPeersDemotions)
        , Text -> Integer -> Metric
IntM Text
"peerSelection.WarmBigLedgerPeersPromotions" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfWarmBigLedgerPeersPromotions)
        , Text -> Integer -> Metric
IntM Text
"peerSelection.ActiveBigLedgerPeers" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfActiveBigLedgerPeers)
        , Text -> Integer -> Metric
IntM Text
"peerSelection.ActiveBigLedgerPeersDemotions" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfActiveBigLedgerPeersDemotions)

        , Text -> Integer -> Metric
IntM Text
"peerSelection.KnownLocalRootPeers" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfKnownLocalRootPeers)
        , Text -> Integer -> Metric
IntM Text
"peerSelection.EstablishedLocalRootPeers" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfEstablishedLocalRootPeers)
        , Text -> Integer -> Metric
IntM Text
"peerSelection.WarmLocalRootPeersPromotions" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfWarmLocalRootPeersPromotions)
        , Text -> Integer -> Metric
IntM Text
"peerSelection.ActiveLocalRootPeers" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfActiveLocalRootPeers)
        , Text -> Integer -> Metric
IntM Text
"peerSelection.ActiveLocalRootPeersDemotions" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfActiveLocalRootPeersDemotions)


        , Text -> Integer -> Metric
IntM Text
"peerSelection.KnownNonRootPeers" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfKnownNonRootPeers)
        , Text -> Integer -> Metric
IntM Text
"peerSelection.ColdNonRootPeersPromotions" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfColdNonRootPeersPromotions)
        , Text -> Integer -> Metric
IntM Text
"peerSelection.EstablishedNonRootPeers" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfEstablishedNonRootPeers)
        , Text -> Integer -> Metric
IntM Text
"peerSelection.WarmNonRootPeersDemotions" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfWarmNonRootPeersDemotions)
        , Text -> Integer -> Metric
IntM Text
"peerSelection.WarmNonRootPeersPromotions" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfWarmNonRootPeersPromotions)
        , Text -> Integer -> Metric
IntM Text
"peerSelection.ActiveNonRootPeers" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfActiveNonRootPeers)
        , Text -> Integer -> Metric
IntM Text
"peerSelection.ActiveNonRootPeersDemotions" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
numberOfActiveNonRootPeersDemotions)
{-- TODO: Before "cardano-diffusion" removal:
        , IntM "peerSelection.KnownBootstrapPeers" (fromIntegral $ snd $ Cardano.viewKnownBootstrapPeers extraCounters)
        , IntM "peerSelection.ColdBootstrapPeersPromotions" (fromIntegral $ snd $ Cardano.viewColdBootstrapPeersPromotions extraCounters)
        , IntM "peerSelection.EstablishedBootstrapPeers" (fromIntegral $ snd $ Cardano.viewEstablishedBootstrapPeers extraCounters)
        , IntM "peerSelection.WarmBootstrapPeersDemotions" (fromIntegral $ snd $ Cardano.viewWarmBootstrapPeersDemotions extraCounters)
        , IntM "peerSelection.WarmBootstrapPeersPromotions" (fromIntegral $ snd $ Cardano.viewWarmBootstrapPeersPromotions extraCounters)
        , IntM "peerSelection.ActiveBootstrapPeers" (fromIntegral $ snd $ Cardano.viewActiveBootstrapPeers extraCounters)
        , IntM "peerSelection.ActiveBootstrapPeersDemotions" (fromIntegral $ snd $ Cardano.viewActiveBootstrapPeersDemotions extraCounters)
--}
        ]

instance MetaTrace (PeerSelectionCounters extraCounters) where
    namespaceFor :: PeerSelectionCounters extraCounters
-> Namespace (PeerSelectionCounters extraCounters)
namespaceFor PeerSelectionCounters {} = [Text] -> [Text] -> Namespace (PeerSelectionCounters extraCounters)
forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Counters"]

    severityFor :: Namespace (PeerSelectionCounters extraCounters)
-> Maybe (PeerSelectionCounters extraCounters) -> Maybe SeverityS
severityFor (Namespace [Text]
_ [Text
"Counters"]) Maybe (PeerSelectionCounters extraCounters)
_ = SeverityS -> Maybe SeverityS
forall a. a -> Maybe a
Just SeverityS
Debug
    severityFor Namespace (PeerSelectionCounters extraCounters)
_ Maybe (PeerSelectionCounters extraCounters)
_                          = Maybe SeverityS
forall a. Maybe a
Nothing

    documentFor :: Namespace (PeerSelectionCounters extraCounters) -> Maybe Text
documentFor (Namespace [Text]
_ [Text
"Counters"]) = Text -> Maybe Text
forall a. a -> Maybe a
Just
      Text
"Counters of selected peers"
    documentFor Namespace (PeerSelectionCounters extraCounters)
_ = Maybe Text
forall a. Maybe a
Nothing

    metricsDocFor :: Namespace (PeerSelectionCounters extraCounters) -> [(Text, Text)]
metricsDocFor (Namespace [Text]
_ [Text
"Counters"]) =
     [ (Text
"peerSelection.Cold", Text
"Number of cold peers")
     , (Text
"peerSelection.Warm", Text
"Number of warm peers")
     , (Text
"peerSelection.Hot", Text
"Number of hot peers")
     , (Text
"peerSelection.ColdBigLedgerPeers", Text
"Number of cold big ledger peers")
     , (Text
"peerSelection.WarmBigLedgerPeers", Text
"Number of warm big ledger peers")
     , (Text
"peerSelection.HotBigLedgerPeers", Text
"Number of hot big ledger peers")
     , (Text
"peerSelection.LocalRoots", Text
"Numbers of warm & hot local roots")

     , (Text
"peerSelection.RootPeers", Text
"Number of root peers")
      , (Text
"peerSelection.KnownPeers", Text
"Number of known peers")
      , (Text
"peerSelection.ColdPeersPromotions", Text
"Number of cold peers promotions")
      , (Text
"peerSelection.EstablishedPeers", Text
"Number of established peers")
      , (Text
"peerSelection.WarmPeersDemotions", Text
"Number of warm peers demotions")
      , (Text
"peerSelection.WarmPeersPromotions", Text
"Number of warm peers promotions")
      , (Text
"peerSelection.ActivePeers", Text
"Number of active peers")
      , (Text
"peerSelection.ActivePeersDemotions", Text
"Number of active peers demotions")

      , (Text
"peerSelection.KnownBigLedgerPeers", Text
"Number of known big ledger peers")
      , (Text
"peerSelection.ColdBigLedgerPeersPromotions", Text
"Number of cold big ledger peers promotions")
      , (Text
"peerSelection.EstablishedBigLedgerPeers", Text
"Number of established big ledger peers")
      , (Text
"peerSelection.WarmBigLedgerPeersDemotions", Text
"Number of warm big ledger peers demotions")
      , (Text
"peerSelection.WarmBigLedgerPeersPromotions", Text
"Number of warm big ledger peers promotions")
      , (Text
"peerSelection.ActiveBigLedgerPeers", Text
"Number of active big ledger peers")
      , (Text
"peerSelection.ActiveBigLedgerPeersDemotions", Text
"Number of active big ledger peers demotions")

      , (Text
"peerSelection.KnownLocalRootPeers", Text
"Number of known local root peers")
      , (Text
"peerSelection.EstablishedLocalRootPeers", Text
"Number of established local root peers")
      , (Text
"peerSelection.WarmLocalRootPeersPromotions", Text
"Number of warm local root peers promotions")
      , (Text
"peerSelection.ActiveLocalRootPeers", Text
"Number of active local root peers")
      , (Text
"peerSelection.ActiveLocalRootPeersDemotions", Text
"Number of active local root peers demotions")

      , (Text
"peerSelection.KnownNonRootPeers", Text
"Number of known non root peers")
      , (Text
"peerSelection.ColdNonRootPeersPromotions", Text
"Number of cold non root peers promotions")
      , (Text
"peerSelection.EstablishedNonRootPeers", Text
"Number of established non root peers")
      , (Text
"peerSelection.WarmNonRootPeersDemotions", Text
"Number of warm non root peers demotions")
      , (Text
"peerSelection.WarmNonRootPeersPromotions", Text
"Number of warm non root peers promotions")
      , (Text
"peerSelection.ActiveNonRootPeers", Text
"Number of active non root peers")
      , (Text
"peerSelection.ActiveNonRootPeersDemotions", Text
"Number of active non root peers demotions")

      , (Text
"peerSelection.KnownBootstrapPeers", Text
"Number of known bootstrap peers")
      , (Text
"peerSelection.ColdBootstrapPeersPromotions", Text
"Number of cold bootstrap peers promotions")
      , (Text
"peerSelection.EstablishedBootstrapPeers", Text
"Number of established bootstrap peers")
      , (Text
"peerSelection.WarmBootstrapPeersDemotions", Text
"Number of warm bootstrap peers demotions")
      , (Text
"peerSelection.WarmBootstrapPeersPromotions", Text
"Number of warm bootstrap peers promotions")
      , (Text
"peerSelection.ActiveBootstrapPeers", Text
"Number of active bootstrap peers")
      , (Text
"peerSelection.ActiveBootstrapPeersDemotions", Text
"Number of active bootstrap peers demotions")

     ]
    metricsDocFor Namespace (PeerSelectionCounters extraCounters)
_ = []

    allNamespaces :: [Namespace (PeerSelectionCounters extraCounters)]
allNamespaces =[
      [Text] -> [Text] -> Namespace (PeerSelectionCounters extraCounters)
forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Counters"]
      ]