{-# LANGUAGE FlexibleContexts    #-}
{-# LANGUAGE FlexibleInstances   #-}
{-# LANGUAGE OverloadedStrings   #-}
{-# LANGUAGE PatternSynonyms     #-}
{-# LANGUAGE RecordWildCards     #-}
{-# LANGUAGE ScopedTypeVariables #-}

--------------------------------------------------------------------------------
-- Orphan instances module for Cardano tracer.
{-# OPTIONS_GHC -Wno-orphans #-}
--------------------------------------------------------------------------------

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

--------------------------------------------------------------------------------
import Cardano.Logging
import Data.Aeson
import Ouroboros.Network.PeerSelection.Governor.Types (PeerSelectionCounters,
           PeerSelectionView (..), SupportsPeerSelectionState (..),
           pattern PeerSelectionCountersHWC)

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

instance LogFormatting (ViewExtraPeers extraPeers)
      => LogFormatting (PeerSelectionCounters (ViewExtraPeers extraPeers)) where
  forMachine :: DetailLevel
-> PeerSelectionCounters (ViewExtraPeers extraPeers) -> Object
forMachine DetailLevel
dtal PeerSelectionCounters {Int
ViewExtraPeers extraPeers
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 :: ViewExtraPeers extraPeers
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
            ] Object -> Object -> Object
forall a. Semigroup a => a -> a -> a
<> DetailLevel -> ViewExtraPeers extraPeers -> Object
forall a. LogFormatting a => DetailLevel -> a -> Object
forMachine DetailLevel
dtal ViewExtraPeers extraPeers
extraCounters

  asMetrics :: PeerSelectionCounters (ViewExtraPeers extraPeers) -> [Metric]
asMetrics PeerSelectionCounters (ViewExtraPeers extraPeers)
psc =
    let base :: [Metric]
base = case PeerSelectionCounters (ViewExtraPeers extraPeers)
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 (ViewExtraPeers extraPeers) -> Int
forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfActiveLocalRootPeers PeerSelectionCounters (ViewExtraPeers extraPeers)
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 (ViewExtraPeers extraPeers) -> Int
forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfEstablishedLocalRootPeers PeerSelectionCounters (ViewExtraPeers extraPeers)
psc
                                Int -> Int -> Int
forall a. Num a => a -> a -> a
- PeerSelectionCounters (ViewExtraPeers extraPeers) -> Int
forall extraCounters. PeerSelectionCounters extraCounters -> Int
numberOfActiveLocalRootPeers PeerSelectionCounters (ViewExtraPeers extraPeers)
psc)
              ]
          [Metric] -> [Metric] -> [Metric]
forall a. [a] -> [a] -> [a]
++
          case PeerSelectionCounters (ViewExtraPeers extraPeers)
psc of
            PeerSelectionCounters {Int
ViewExtraPeers extraPeers
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 :: ViewExtraPeers extraPeers
..} ->
              [ 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)
              ]
     in ViewExtraPeers extraPeers -> [Metric]
forall a. LogFormatting a => a -> [Metric]
asMetrics (PeerSelectionCounters (ViewExtraPeers extraPeers)
-> ViewExtraPeers extraPeers
forall extraCounters.
PeerSelectionCounters extraCounters -> extraCounters
extraCounters PeerSelectionCounters (ViewExtraPeers extraPeers)
psc) [Metric] -> [Metric] -> [Metric]
forall a. Semigroup a => a -> a -> a
<> [Metric]
base


instance MetaTrace extraCounters => 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
"Peer selection peer counters"
    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, Text)] -> [(Text, Text)] -> [(Text, Text)]
forall a. Semigroup a => a -> a -> a
<> Namespace extraCounters -> [(Text, Text)]
forall a. MetaTrace a => Namespace a -> [(Text, Text)]
metricsDocFor ([Text] -> [Text] -> Namespace extraCounters
forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Counters"] :: Namespace extraCounters)

    metricsDocFor Namespace (PeerSelectionCounters extraCounters)
_ = []

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