{-# LANGUAGE FlexibleContexts     #-}
{-# LANGUAGE OverloadedStrings    #-}
{-# LANGUAGE PackageImports       #-}
{-# LANGUAGE ScopedTypeVariables  #-}
{-# LANGUAGE UndecidableInstances #-}

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

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

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

module Ouroboros.Network.Tracing.Driver () where

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

---------
-- base -
---------
--
---------------------
-- Package: "aeson" -
---------------------
import "aeson" Data.Aeson (Value (String), (.=))
---------------------------------
-- Package: "ouroboros-network" -
---------------------------------
import "ouroboros-network" Ouroboros.Network.Driver.Simple qualified as Simple
import "ouroboros-network" Ouroboros.Network.Driver.Stateful qualified as Stateful
--------------------------------
-- Package: "trace-dispatcher" -
--------------------------------
import "trace-dispatcher" Cardano.Logging
-------------------------------
-- Package: "typed-protocols" -
-------------------------------
import "typed-protocols" Network.TypedProtocol.Codec qualified as Simple
import "typed-protocols" Network.TypedProtocol.Stateful.Codec qualified as Stateful

-------------------------------------------------------------------------------
-- Driver Simple.
-------------------------------------------------------------------------------

instance LogFormatting (Simple.AnyMessage ps)
      => LogFormatting (Simple.TraceSendRecv ps) where
  forMachine :: DetailLevel -> TraceSendRecv ps -> Object
forMachine DetailLevel
dtal (Simple.TraceSendMsg AnyMessage ps
m) = [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
"Send" , Key
"msg" Key -> Object -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DetailLevel -> AnyMessage ps -> Object
forall a. LogFormatting a => DetailLevel -> a -> Object
forMachine DetailLevel
dtal AnyMessage ps
m ]
  forMachine DetailLevel
dtal (Simple.TraceRecvMsg AnyMessage ps
m) = [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
"Recv" , Key
"msg" Key -> Object -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DetailLevel -> AnyMessage ps -> Object
forall a. LogFormatting a => DetailLevel -> a -> Object
forMachine DetailLevel
dtal AnyMessage ps
m ]

  forHuman :: TraceSendRecv ps -> Text
forHuman (Simple.TraceSendMsg AnyMessage ps
m) = Text
"Send: " Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> AnyMessage ps -> Text
forall a. LogFormatting a => a -> Text
forHuman AnyMessage ps
m
  forHuman (Simple.TraceRecvMsg AnyMessage ps
m) = Text
"Receive: " Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> AnyMessage ps -> Text
forall a. LogFormatting a => a -> Text
forHuman AnyMessage ps
m

  asMetrics :: TraceSendRecv ps -> [Metric]
asMetrics (Simple.TraceSendMsg AnyMessage ps
m) = AnyMessage ps -> [Metric]
forall a. LogFormatting a => a -> [Metric]
asMetrics AnyMessage ps
m
  asMetrics (Simple.TraceRecvMsg AnyMessage ps
m) = AnyMessage ps -> [Metric]
forall a. LogFormatting a => a -> [Metric]
asMetrics AnyMessage ps
m

instance LogFormatting (Stateful.AnyMessage ps f)
      => LogFormatting (Stateful.TraceSendRecv ps f) where
  forMachine :: DetailLevel -> TraceSendRecv ps f -> Object
forMachine DetailLevel
dtal (Stateful.TraceSendMsg AnyMessage ps f
m) = [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
"Send" , Key
"msg" Key -> Object -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DetailLevel -> AnyMessage ps f -> Object
forall a. LogFormatting a => DetailLevel -> a -> Object
forMachine DetailLevel
dtal AnyMessage ps f
m ]
  forMachine DetailLevel
dtal (Stateful.TraceRecvMsg AnyMessage ps f
m) = [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
"Recv" , Key
"msg" Key -> Object -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DetailLevel -> AnyMessage ps f -> Object
forall a. LogFormatting a => DetailLevel -> a -> Object
forMachine DetailLevel
dtal AnyMessage ps f
m ]

  forHuman :: TraceSendRecv ps f -> Text
forHuman (Stateful.TraceSendMsg AnyMessage ps f
m) = Text
"Send: " Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> AnyMessage ps f -> Text
forall a. LogFormatting a => a -> Text
forHuman AnyMessage ps f
m
  forHuman (Stateful.TraceRecvMsg AnyMessage ps f
m) = Text
"Receive: " Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> AnyMessage ps f -> Text
forall a. LogFormatting a => a -> Text
forHuman AnyMessage ps f
m

  asMetrics :: TraceSendRecv ps f -> [Metric]
asMetrics (Stateful.TraceSendMsg AnyMessage ps f
m) = AnyMessage ps f -> [Metric]
forall a. LogFormatting a => a -> [Metric]
asMetrics AnyMessage ps f
m
  asMetrics (Stateful.TraceRecvMsg AnyMessage ps f
m) = AnyMessage ps f -> [Metric]
forall a. LogFormatting a => a -> [Metric]
asMetrics AnyMessage ps f
m

instance MetaTrace (Simple.AnyMessage ps) =>
            MetaTrace (Simple.TraceSendRecv ps) where
  namespaceFor :: TraceSendRecv ps -> Namespace (TraceSendRecv ps)
namespaceFor (Simple.TraceSendMsg AnyMessage ps
msg) =
    Text -> Namespace (AnyMessage ps) -> Namespace (TraceSendRecv ps)
forall a b. Text -> Namespace a -> Namespace b
nsPrependInner Text
"Send" (AnyMessage ps -> Namespace (AnyMessage ps)
forall a. MetaTrace a => a -> Namespace a
namespaceFor AnyMessage ps
msg)
  namespaceFor (Simple.TraceRecvMsg AnyMessage ps
msg) =
    Text -> Namespace (AnyMessage ps) -> Namespace (TraceSendRecv ps)
forall a b. Text -> Namespace a -> Namespace b
nsPrependInner Text
"Receive" (AnyMessage ps -> Namespace (AnyMessage ps)
forall a. MetaTrace a => a -> Namespace a
namespaceFor AnyMessage ps
msg)

  severityFor :: Namespace (TraceSendRecv ps)
-> Maybe (TraceSendRecv ps) -> Maybe SeverityS
severityFor (Namespace [Text]
out (Text
"Send" : [Text]
tl)) (Just (Simple.TraceSendMsg AnyMessage ps
msg)) =
    Namespace (AnyMessage ps)
-> Maybe (AnyMessage ps) -> Maybe SeverityS
forall a. MetaTrace a => Namespace a -> Maybe a -> Maybe SeverityS
severityFor ([Text] -> [Text] -> Namespace (AnyMessage ps)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl) (AnyMessage ps -> Maybe (AnyMessage ps)
forall a. a -> Maybe a
Just AnyMessage ps
msg)
  severityFor (Namespace [Text]
out (Text
"Send" : [Text]
tl)) Maybe (TraceSendRecv ps)
Nothing =
    Namespace (AnyMessage ps)
-> Maybe (AnyMessage ps) -> Maybe SeverityS
forall a. MetaTrace a => Namespace a -> Maybe a -> Maybe SeverityS
severityFor ([Text] -> [Text] -> Namespace (AnyMessage ps)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl :: Namespace (Simple.AnyMessage ps)) Maybe (AnyMessage ps)
forall a. Maybe a
Nothing
  severityFor (Namespace [Text]
out (Text
"Receive" : [Text]
tl)) (Just (Simple.TraceSendMsg AnyMessage ps
msg)) =
    Namespace (AnyMessage ps)
-> Maybe (AnyMessage ps) -> Maybe SeverityS
forall a. MetaTrace a => Namespace a -> Maybe a -> Maybe SeverityS
severityFor ([Text] -> [Text] -> Namespace (AnyMessage ps)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl) (AnyMessage ps -> Maybe (AnyMessage ps)
forall a. a -> Maybe a
Just AnyMessage ps
msg)
  severityFor (Namespace [Text]
out (Text
"Receive" : [Text]
tl)) Maybe (TraceSendRecv ps)
Nothing =
    Namespace (AnyMessage ps)
-> Maybe (AnyMessage ps) -> Maybe SeverityS
forall a. MetaTrace a => Namespace a -> Maybe a -> Maybe SeverityS
severityFor ([Text] -> [Text] -> Namespace (AnyMessage ps)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl :: Namespace (Simple.AnyMessage ps)) Maybe (AnyMessage ps)
forall a. Maybe a
Nothing
  severityFor Namespace (TraceSendRecv ps)
_ Maybe (TraceSendRecv ps)
_ = Maybe SeverityS
forall a. Maybe a
Nothing

  privacyFor :: Namespace (TraceSendRecv ps)
-> Maybe (TraceSendRecv ps) -> Maybe Privacy
privacyFor (Namespace [Text]
out (Text
"Send" : [Text]
tl)) (Just (Simple.TraceSendMsg AnyMessage ps
msg)) =
    Namespace (AnyMessage ps) -> Maybe (AnyMessage ps) -> Maybe Privacy
forall a. MetaTrace a => Namespace a -> Maybe a -> Maybe Privacy
privacyFor ([Text] -> [Text] -> Namespace (AnyMessage ps)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl) (AnyMessage ps -> Maybe (AnyMessage ps)
forall a. a -> Maybe a
Just AnyMessage ps
msg)
  privacyFor (Namespace [Text]
out (Text
"Send" : [Text]
tl)) Maybe (TraceSendRecv ps)
Nothing =
    Namespace (AnyMessage ps) -> Maybe (AnyMessage ps) -> Maybe Privacy
forall a. MetaTrace a => Namespace a -> Maybe a -> Maybe Privacy
privacyFor ([Text] -> [Text] -> Namespace (AnyMessage ps)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl :: Namespace (Simple.AnyMessage ps)) Maybe (AnyMessage ps)
forall a. Maybe a
Nothing
  privacyFor (Namespace [Text]
out (Text
"Receive" : [Text]
tl)) (Just (Simple.TraceSendMsg AnyMessage ps
msg)) =
    Namespace (AnyMessage ps) -> Maybe (AnyMessage ps) -> Maybe Privacy
forall a. MetaTrace a => Namespace a -> Maybe a -> Maybe Privacy
privacyFor ([Text] -> [Text] -> Namespace (AnyMessage ps)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl) (AnyMessage ps -> Maybe (AnyMessage ps)
forall a. a -> Maybe a
Just AnyMessage ps
msg)
  privacyFor (Namespace [Text]
out (Text
"Receive" : [Text]
tl)) Maybe (TraceSendRecv ps)
Nothing =
    Namespace (AnyMessage ps) -> Maybe (AnyMessage ps) -> Maybe Privacy
forall a. MetaTrace a => Namespace a -> Maybe a -> Maybe Privacy
privacyFor ([Text] -> [Text] -> Namespace (AnyMessage ps)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl :: Namespace (Simple.AnyMessage ps)) Maybe (AnyMessage ps)
forall a. Maybe a
Nothing
  privacyFor Namespace (TraceSendRecv ps)
_ Maybe (TraceSendRecv ps)
_ = Maybe Privacy
forall a. Maybe a
Nothing

  detailsFor :: Namespace (TraceSendRecv ps)
-> Maybe (TraceSendRecv ps) -> Maybe DetailLevel
detailsFor (Namespace [Text]
out (Text
"Send" : [Text]
tl)) (Just (Simple.TraceSendMsg AnyMessage ps
msg)) =
    Namespace (AnyMessage ps)
-> Maybe (AnyMessage ps) -> Maybe DetailLevel
forall a.
MetaTrace a =>
Namespace a -> Maybe a -> Maybe DetailLevel
detailsFor ([Text] -> [Text] -> Namespace (AnyMessage ps)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl) (AnyMessage ps -> Maybe (AnyMessage ps)
forall a. a -> Maybe a
Just AnyMessage ps
msg)
  detailsFor (Namespace [Text]
out (Text
"Send" : [Text]
tl)) Maybe (TraceSendRecv ps)
Nothing =
    Namespace (AnyMessage ps)
-> Maybe (AnyMessage ps) -> Maybe DetailLevel
forall a.
MetaTrace a =>
Namespace a -> Maybe a -> Maybe DetailLevel
detailsFor ([Text] -> [Text] -> Namespace (AnyMessage ps)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl :: Namespace (Simple.AnyMessage ps)) Maybe (AnyMessage ps)
forall a. Maybe a
Nothing
  detailsFor (Namespace [Text]
out (Text
"Receive" : [Text]
tl)) (Just (Simple.TraceSendMsg AnyMessage ps
msg)) =
    Namespace (AnyMessage ps)
-> Maybe (AnyMessage ps) -> Maybe DetailLevel
forall a.
MetaTrace a =>
Namespace a -> Maybe a -> Maybe DetailLevel
detailsFor ([Text] -> [Text] -> Namespace (AnyMessage ps)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl) (AnyMessage ps -> Maybe (AnyMessage ps)
forall a. a -> Maybe a
Just AnyMessage ps
msg)
  detailsFor (Namespace [Text]
out (Text
"Receive" : [Text]
tl)) Maybe (TraceSendRecv ps)
Nothing =
    Namespace (AnyMessage ps)
-> Maybe (AnyMessage ps) -> Maybe DetailLevel
forall a.
MetaTrace a =>
Namespace a -> Maybe a -> Maybe DetailLevel
detailsFor ([Text] -> [Text] -> Namespace (AnyMessage ps)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl :: Namespace (Simple.AnyMessage ps)) Maybe (AnyMessage ps)
forall a. Maybe a
Nothing
  detailsFor Namespace (TraceSendRecv ps)
_ Maybe (TraceSendRecv ps)
_ = Maybe DetailLevel
forall a. Maybe a
Nothing

  metricsDocFor :: Namespace (TraceSendRecv ps) -> [(Text, Text)]
metricsDocFor (Namespace [Text]
out (Text
"Send" : [Text]
tl)) =
    Namespace (AnyMessage ps) -> [(Text, Text)]
forall a. MetaTrace a => Namespace a -> [(Text, Text)]
metricsDocFor (Namespace (ZonkAny 6) -> Namespace (AnyMessage ps)
forall a b. Namespace a -> Namespace b
nsCast ([Text] -> [Text] -> Namespace (ZonkAny 6)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl) :: Namespace (Simple.AnyMessage ps))
  metricsDocFor (Namespace [Text]
out (Text
"Receive" : [Text]
tl)) =
    Namespace (AnyMessage ps) -> [(Text, Text)]
forall a. MetaTrace a => Namespace a -> [(Text, Text)]
metricsDocFor (Namespace (ZonkAny 7) -> Namespace (AnyMessage ps)
forall a b. Namespace a -> Namespace b
nsCast ([Text] -> [Text] -> Namespace (ZonkAny 7)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl) :: Namespace (Simple.AnyMessage ps))
  metricsDocFor Namespace (TraceSendRecv ps)
_ = []

  documentFor :: Namespace (TraceSendRecv ps) -> Maybe Text
documentFor (Namespace [Text]
out (Text
"Send" : [Text]
tl)) =
    Namespace (AnyMessage ps) -> Maybe Text
forall a. MetaTrace a => Namespace a -> Maybe Text
documentFor (Namespace (ZonkAny 4) -> Namespace (AnyMessage ps)
forall a b. Namespace a -> Namespace b
nsCast ([Text] -> [Text] -> Namespace (ZonkAny 4)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl) :: Namespace (Simple.AnyMessage ps))
  documentFor (Namespace [Text]
out (Text
"Receive" : [Text]
tl)) =
    Namespace (AnyMessage ps) -> Maybe Text
forall a. MetaTrace a => Namespace a -> Maybe Text
documentFor (Namespace (ZonkAny 5) -> Namespace (AnyMessage ps)
forall a b. Namespace a -> Namespace b
nsCast ([Text] -> [Text] -> Namespace (ZonkAny 5)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl) :: Namespace (Simple.AnyMessage ps))
  documentFor Namespace (TraceSendRecv ps)
_ = Maybe Text
forall a. Maybe a
Nothing

  allNamespaces :: [Namespace (TraceSendRecv ps)]
allNamespaces =
    let cn :: [Namespace (AnyMessage ps)]
cn = [Namespace (AnyMessage ps)]
forall a. MetaTrace a => [Namespace a]
allNamespaces :: [Namespace (Simple.AnyMessage ps)]
    in (Namespace (AnyMessage ps) -> Namespace (TraceSendRecv ps))
-> [Namespace (AnyMessage ps)] -> [Namespace (TraceSendRecv ps)]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Text -> Namespace (AnyMessage ps) -> Namespace (TraceSendRecv ps)
forall a b. Text -> Namespace a -> Namespace b
nsPrependInner Text
"Send") [Namespace (AnyMessage ps)]
cn [Namespace (TraceSendRecv ps)]
-> [Namespace (TraceSendRecv ps)] -> [Namespace (TraceSendRecv ps)]
forall a. [a] -> [a] -> [a]
++ (Namespace (AnyMessage ps) -> Namespace (TraceSendRecv ps))
-> [Namespace (AnyMessage ps)] -> [Namespace (TraceSendRecv ps)]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Text -> Namespace (AnyMessage ps) -> Namespace (TraceSendRecv ps)
forall a b. Text -> Namespace a -> Namespace b
nsPrependInner Text
"Receive") [Namespace (AnyMessage ps)]
cn

instance MetaTrace (Stateful.AnyMessage ps f) =>
            MetaTrace (Stateful.TraceSendRecv ps f) where
  namespaceFor :: TraceSendRecv ps f -> Namespace (TraceSendRecv ps f)
namespaceFor (Stateful.TraceSendMsg AnyMessage ps f
msg) =
    Text
-> Namespace (AnyMessage ps f) -> Namespace (TraceSendRecv ps f)
forall a b. Text -> Namespace a -> Namespace b
nsPrependInner Text
"Send" (AnyMessage ps f -> Namespace (AnyMessage ps f)
forall a. MetaTrace a => a -> Namespace a
namespaceFor AnyMessage ps f
msg)
  namespaceFor (Stateful.TraceRecvMsg AnyMessage ps f
msg) =
    Text
-> Namespace (AnyMessage ps f) -> Namespace (TraceSendRecv ps f)
forall a b. Text -> Namespace a -> Namespace b
nsPrependInner Text
"Receive" (AnyMessage ps f -> Namespace (AnyMessage ps f)
forall a. MetaTrace a => a -> Namespace a
namespaceFor AnyMessage ps f
msg)

  severityFor :: Namespace (TraceSendRecv ps f)
-> Maybe (TraceSendRecv ps f) -> Maybe SeverityS
severityFor (Namespace [Text]
out (Text
"Send" : [Text]
tl)) (Just (Stateful.TraceSendMsg AnyMessage ps f
msg)) =
    Namespace (AnyMessage ps f)
-> Maybe (AnyMessage ps f) -> Maybe SeverityS
forall a. MetaTrace a => Namespace a -> Maybe a -> Maybe SeverityS
severityFor ([Text] -> [Text] -> Namespace (AnyMessage ps f)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl) (AnyMessage ps f -> Maybe (AnyMessage ps f)
forall a. a -> Maybe a
Just AnyMessage ps f
msg)
  severityFor (Namespace [Text]
out (Text
"Send" : [Text]
tl)) Maybe (TraceSendRecv ps f)
Nothing =
    Namespace (AnyMessage ps f)
-> Maybe (AnyMessage ps f) -> Maybe SeverityS
forall a. MetaTrace a => Namespace a -> Maybe a -> Maybe SeverityS
severityFor ([Text] -> [Text] -> Namespace (AnyMessage ps f)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl :: Namespace (Stateful.AnyMessage ps f)) Maybe (AnyMessage ps f)
forall a. Maybe a
Nothing

  severityFor (Namespace [Text]
out (Text
"Receive" : [Text]
tl)) (Just (Stateful.TraceSendMsg AnyMessage ps f
msg)) =
    Namespace (AnyMessage ps f)
-> Maybe (AnyMessage ps f) -> Maybe SeverityS
forall a. MetaTrace a => Namespace a -> Maybe a -> Maybe SeverityS
severityFor ([Text] -> [Text] -> Namespace (AnyMessage ps f)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl) (AnyMessage ps f -> Maybe (AnyMessage ps f)
forall a. a -> Maybe a
Just AnyMessage ps f
msg)
  severityFor (Namespace [Text]
out (Text
"Receive" : [Text]
tl)) Maybe (TraceSendRecv ps f)
Nothing =
    Namespace (AnyMessage ps f)
-> Maybe (AnyMessage ps f) -> Maybe SeverityS
forall a. MetaTrace a => Namespace a -> Maybe a -> Maybe SeverityS
severityFor ([Text] -> [Text] -> Namespace (AnyMessage ps f)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl :: Namespace (Stateful.AnyMessage ps f)) Maybe (AnyMessage ps f)
forall a. Maybe a
Nothing
  severityFor Namespace (TraceSendRecv ps f)
_ Maybe (TraceSendRecv ps f)
_ = Maybe SeverityS
forall a. Maybe a
Nothing

  privacyFor :: Namespace (TraceSendRecv ps f)
-> Maybe (TraceSendRecv ps f) -> Maybe Privacy
privacyFor (Namespace [Text]
out (Text
"Send" : [Text]
tl)) (Just (Stateful.TraceSendMsg AnyMessage ps f
msg)) =
    Namespace (AnyMessage ps f)
-> Maybe (AnyMessage ps f) -> Maybe Privacy
forall a. MetaTrace a => Namespace a -> Maybe a -> Maybe Privacy
privacyFor ([Text] -> [Text] -> Namespace (AnyMessage ps f)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl) (AnyMessage ps f -> Maybe (AnyMessage ps f)
forall a. a -> Maybe a
Just AnyMessage ps f
msg)
  privacyFor (Namespace [Text]
out (Text
"Send" : [Text]
tl)) Maybe (TraceSendRecv ps f)
Nothing =
    Namespace (AnyMessage ps f)
-> Maybe (AnyMessage ps f) -> Maybe Privacy
forall a. MetaTrace a => Namespace a -> Maybe a -> Maybe Privacy
privacyFor ([Text] -> [Text] -> Namespace (AnyMessage ps f)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl :: Namespace (Stateful.AnyMessage ps f)) Maybe (AnyMessage ps f)
forall a. Maybe a
Nothing
  privacyFor (Namespace [Text]
out (Text
"Receive" : [Text]
tl)) (Just (Stateful.TraceSendMsg AnyMessage ps f
msg)) =
    Namespace (AnyMessage ps f)
-> Maybe (AnyMessage ps f) -> Maybe Privacy
forall a. MetaTrace a => Namespace a -> Maybe a -> Maybe Privacy
privacyFor ([Text] -> [Text] -> Namespace (AnyMessage ps f)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl) (AnyMessage ps f -> Maybe (AnyMessage ps f)
forall a. a -> Maybe a
Just AnyMessage ps f
msg)
  privacyFor (Namespace [Text]
out (Text
"Receive" : [Text]
tl)) Maybe (TraceSendRecv ps f)
Nothing =
    Namespace (AnyMessage ps f)
-> Maybe (AnyMessage ps f) -> Maybe Privacy
forall a. MetaTrace a => Namespace a -> Maybe a -> Maybe Privacy
privacyFor ([Text] -> [Text] -> Namespace (AnyMessage ps f)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl :: Namespace (Stateful.AnyMessage ps f)) Maybe (AnyMessage ps f)
forall a. Maybe a
Nothing
  privacyFor Namespace (TraceSendRecv ps f)
_ Maybe (TraceSendRecv ps f)
_ = Maybe Privacy
forall a. Maybe a
Nothing

  detailsFor :: Namespace (TraceSendRecv ps f)
-> Maybe (TraceSendRecv ps f) -> Maybe DetailLevel
detailsFor (Namespace [Text]
out (Text
"Send" : [Text]
tl)) (Just (Stateful.TraceSendMsg AnyMessage ps f
msg)) =
    Namespace (AnyMessage ps f)
-> Maybe (AnyMessage ps f) -> Maybe DetailLevel
forall a.
MetaTrace a =>
Namespace a -> Maybe a -> Maybe DetailLevel
detailsFor ([Text] -> [Text] -> Namespace (AnyMessage ps f)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl) (AnyMessage ps f -> Maybe (AnyMessage ps f)
forall a. a -> Maybe a
Just AnyMessage ps f
msg)
  detailsFor (Namespace [Text]
out (Text
"Send" : [Text]
tl)) Maybe (TraceSendRecv ps f)
Nothing =
    Namespace (AnyMessage ps f)
-> Maybe (AnyMessage ps f) -> Maybe DetailLevel
forall a.
MetaTrace a =>
Namespace a -> Maybe a -> Maybe DetailLevel
detailsFor ([Text] -> [Text] -> Namespace (AnyMessage ps f)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl :: Namespace (Stateful.AnyMessage ps f)) Maybe (AnyMessage ps f)
forall a. Maybe a
Nothing
  detailsFor (Namespace [Text]
out (Text
"Receive" : [Text]
tl)) (Just (Stateful.TraceSendMsg AnyMessage ps f
msg)) =
    Namespace (AnyMessage ps f)
-> Maybe (AnyMessage ps f) -> Maybe DetailLevel
forall a.
MetaTrace a =>
Namespace a -> Maybe a -> Maybe DetailLevel
detailsFor ([Text] -> [Text] -> Namespace (AnyMessage ps f)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl) (AnyMessage ps f -> Maybe (AnyMessage ps f)
forall a. a -> Maybe a
Just AnyMessage ps f
msg)
  detailsFor (Namespace [Text]
out (Text
"Receive" : [Text]
tl)) Maybe (TraceSendRecv ps f)
Nothing =
    Namespace (AnyMessage ps f)
-> Maybe (AnyMessage ps f) -> Maybe DetailLevel
forall a.
MetaTrace a =>
Namespace a -> Maybe a -> Maybe DetailLevel
detailsFor ([Text] -> [Text] -> Namespace (AnyMessage ps f)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl :: Namespace (Stateful.AnyMessage ps f)) Maybe (AnyMessage ps f)
forall a. Maybe a
Nothing
  detailsFor Namespace (TraceSendRecv ps f)
_ Maybe (TraceSendRecv ps f)
_ = Maybe DetailLevel
forall a. Maybe a
Nothing

  metricsDocFor :: Namespace (TraceSendRecv ps f) -> [(Text, Text)]
metricsDocFor (Namespace [Text]
out (Text
"Send" : [Text]
tl)) =
    Namespace (AnyMessage ps f) -> [(Text, Text)]
forall a. MetaTrace a => Namespace a -> [(Text, Text)]
metricsDocFor (Namespace (ZonkAny 2) -> Namespace (AnyMessage ps f)
forall a b. Namespace a -> Namespace b
nsCast ([Text] -> [Text] -> Namespace (ZonkAny 2)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl) :: Namespace (Stateful.AnyMessage ps f))
  metricsDocFor (Namespace [Text]
out (Text
"Receive" : [Text]
tl)) =
    Namespace (AnyMessage ps f) -> [(Text, Text)]
forall a. MetaTrace a => Namespace a -> [(Text, Text)]
metricsDocFor (Namespace (ZonkAny 3) -> Namespace (AnyMessage ps f)
forall a b. Namespace a -> Namespace b
nsCast ([Text] -> [Text] -> Namespace (ZonkAny 3)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl) :: Namespace (Stateful.AnyMessage ps f))
  metricsDocFor Namespace (TraceSendRecv ps f)
_ = []

  documentFor :: Namespace (TraceSendRecv ps f) -> Maybe Text
documentFor (Namespace [Text]
out (Text
"Send" : [Text]
tl)) =
    Namespace (AnyMessage ps f) -> Maybe Text
forall a. MetaTrace a => Namespace a -> Maybe Text
documentFor (Namespace (ZonkAny 0) -> Namespace (AnyMessage ps f)
forall a b. Namespace a -> Namespace b
nsCast ([Text] -> [Text] -> Namespace (ZonkAny 0)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl) :: Namespace (Stateful.AnyMessage ps f))
  documentFor (Namespace [Text]
out (Text
"Receive" : [Text]
tl)) =
    Namespace (AnyMessage ps f) -> Maybe Text
forall a. MetaTrace a => Namespace a -> Maybe Text
documentFor (Namespace (ZonkAny 1) -> Namespace (AnyMessage ps f)
forall a b. Namespace a -> Namespace b
nsCast ([Text] -> [Text] -> Namespace (ZonkAny 1)
forall a. [Text] -> [Text] -> Namespace a
Namespace [Text]
out [Text]
tl) :: Namespace (Stateful.AnyMessage ps f))
  documentFor Namespace (TraceSendRecv ps f)
_ = Maybe Text
forall a. Maybe a
Nothing

  allNamespaces :: [Namespace (TraceSendRecv ps f)]
allNamespaces =
    let cn :: [Namespace (AnyMessage ps f)]
cn = [Namespace (AnyMessage ps f)]
forall a. MetaTrace a => [Namespace a]
allNamespaces :: [Namespace (Stateful.AnyMessage ps f)]
    in (Namespace (AnyMessage ps f) -> Namespace (TraceSendRecv ps f))
-> [Namespace (AnyMessage ps f)]
-> [Namespace (TraceSendRecv ps f)]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Text
-> Namespace (AnyMessage ps f) -> Namespace (TraceSendRecv ps f)
forall a b. Text -> Namespace a -> Namespace b
nsPrependInner Text
"Send") [Namespace (AnyMessage ps f)]
cn [Namespace (TraceSendRecv ps f)]
-> [Namespace (TraceSendRecv ps f)]
-> [Namespace (TraceSendRecv ps f)]
forall a. [a] -> [a] -> [a]
++ (Namespace (AnyMessage ps f) -> Namespace (TraceSendRecv ps f))
-> [Namespace (AnyMessage ps f)]
-> [Namespace (TraceSendRecv ps f)]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Text
-> Namespace (AnyMessage ps f) -> Namespace (TraceSendRecv ps f)
forall a b. Text -> Namespace a -> Namespace b
nsPrependInner Text
"Receive") [Namespace (AnyMessage ps f)]
cn