{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE QuantifiedConstraints #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE UndecidableInstances #-}

{-# OPTIONS_GHC -Wno-orphans  #-}

module Cardano.Node.Tracing.Tracers.NodeToClient () where

import           Cardano.Logging
import           Data.Aeson (Value (String), (.=))
import           Data.Text (Text, pack)

import           Network.TypedProtocol.Codec (AnyMessageAndAgency (..))

import           Ouroboros.Consensus.Ledger.Query (Query)
import           Ouroboros.Network.Driver.Simple (TraceSendRecv (..))
import           Ouroboros.Network.Protocol.ChainSync.Type as ChainSync
import qualified Ouroboros.Network.Protocol.LocalStateQuery.Type as LSQ
import qualified Ouroboros.Network.Protocol.LocalTxMonitor.Type as LTM
import qualified Ouroboros.Network.Protocol.LocalTxSubmission.Type as LTS

{-# ANN module ("HLint: ignore Redundant bracket" :: Text) #-}


instance LogFormatting (AnyMessageAndAgency ps)
      => LogFormatting (TraceSendRecv ps) where
  forMachine :: DetailLevel -> TraceSendRecv ps -> Object
forMachine DetailLevel
dtal (TraceSendMsg AnyMessageAndAgency ps
m) = forall a. Monoid a => [a] -> a
mconcat
    [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"Send" , Key
"msg" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= forall a. LogFormatting a => DetailLevel -> a -> Object
forMachine DetailLevel
dtal AnyMessageAndAgency ps
m ]
  forMachine DetailLevel
dtal (TraceRecvMsg AnyMessageAndAgency ps
m) = forall a. Monoid a => [a] -> a
mconcat
    [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"Recv" , Key
"msg" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= forall a. LogFormatting a => DetailLevel -> a -> Object
forMachine DetailLevel
dtal AnyMessageAndAgency ps
m ]

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

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

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

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

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

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

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

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

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


-- --------------------------------------------------------------------------------
-- -- TChainSync Tracer
-- --------------------------------------------------------------------------------

instance LogFormatting (AnyMessageAndAgency (ChainSync blk pt tip)) where
   forMachine :: DetailLevel -> AnyMessageAndAgency (ChainSync blk pt tip) -> Object
forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok ChainSync.MsgRequestNext{}) =
     forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgRequestNext"
              , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
              ]
   forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok ChainSync.MsgAwaitReply{}) =
     forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgAwaitReply"
              , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
              ]
   forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok ChainSync.MsgRollForward{}) =
     forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgRollForward"
              , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
              ]
   forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok ChainSync.MsgRollBackward{}) =
     forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgRollBackward"
              , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
              ]
   forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok ChainSync.MsgFindIntersect{}) =
     forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgFindIntersect"
              , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
              ]
   forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok ChainSync.MsgIntersectFound{}) =
     forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgIntersectFound"
              , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
              ]
   forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok ChainSync.MsgIntersectNotFound{}) =
     forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgIntersectNotFound"
              , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
              ]
   forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok ChainSync.MsgDone{}) =
     forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgDone"
              , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
              ]

instance MetaTrace (AnyMessageAndAgency (ChainSync blk pt tip)) where
    namespaceFor :: AnyMessageAndAgency (ChainSync blk pt tip)
-> Namespace (AnyMessageAndAgency (ChainSync blk pt tip))
namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency (MsgRequestNext {})) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"RequestNext"]
    namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency (MsgAwaitReply {})) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"AwaitReply"]
    namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency (MsgRollForward {})) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"RollForward"]
    namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency (MsgRollBackward {})) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"RollBackward"]
    namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency (MsgFindIntersect {})) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"FindIntersect"]
    namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency (MsgIntersectFound {})) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"IntersectFound"]
    namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency (MsgIntersectNotFound {})) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"IntersectNotFound"]
    namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency (MsgDone {})) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Done"]

    severityFor :: Namespace (AnyMessageAndAgency (ChainSync blk pt tip))
-> Maybe (AnyMessageAndAgency (ChainSync blk pt tip))
-> Maybe SeverityS
severityFor (Namespace [Text]
_ [Text
"RequestNext"]) Maybe (AnyMessageAndAgency (ChainSync blk pt tip))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor (Namespace [Text]
_ [Text
"AwaitReply"]) Maybe (AnyMessageAndAgency (ChainSync blk pt tip))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor (Namespace [Text]
_ [Text
"RollForward"]) Maybe (AnyMessageAndAgency (ChainSync blk pt tip))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor (Namespace [Text]
_ [Text
"RollBackward"]) Maybe (AnyMessageAndAgency (ChainSync blk pt tip))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor (Namespace [Text]
_ [Text
"FindIntersect"]) Maybe (AnyMessageAndAgency (ChainSync blk pt tip))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor (Namespace [Text]
_ [Text
"IntersectFound"]) Maybe (AnyMessageAndAgency (ChainSync blk pt tip))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor (Namespace [Text]
_ [Text
"IntersectNotFound"]) Maybe (AnyMessageAndAgency (ChainSync blk pt tip))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor (Namespace [Text]
_ [Text
"Done"]) Maybe (AnyMessageAndAgency (ChainSync blk pt tip))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor Namespace (AnyMessageAndAgency (ChainSync blk pt tip))
_ Maybe (AnyMessageAndAgency (ChainSync blk pt tip))
_ = forall a. Maybe a
Nothing

    documentFor :: Namespace (AnyMessageAndAgency (ChainSync blk pt tip))
-> Maybe Text
documentFor (Namespace [Text]
_ [Text
"RequestNext"]) = forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ forall a. Monoid a => [a] -> a
mconcat
      [ Text
"Request the next update from the producer. The response can be a roll "
      , Text
"forward, a roll back or wait."
      ]
    documentFor (Namespace [Text]
_ [Text
"AwaitReply"]) = forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ forall a. Monoid a => [a] -> a
mconcat
      [ Text
"Acknowledge the request but require the consumer to wait for the next "
      , Text
"update. This means that the consumer is synced with the producer, and "
      , Text
"the producer is waiting for its own chain state to change."
      ]
    documentFor (Namespace [Text]
_ [Text
"RollForward"]) = forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ forall a. Monoid a => [a] -> a
mconcat
      [ Text
"Tell the consumer to extend their chain with the given header. "
      , Text
"\n "
      , Text
"The message also tells the consumer about the head point of the producer."
      ]
    documentFor (Namespace [Text]
_ [Text
"RollBackward"]) = forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ forall a. Monoid a => [a] -> a
mconcat
      [ Text
"Tell the consumer to roll back to a given point on their chain. "
      , Text
"\n "
      , Text
"The message also tells the consumer about the head point of the producer."
      ]
    documentFor (Namespace [Text]
_ [Text
"FindIntersect"]) = forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ forall a. Monoid a => [a] -> a
mconcat
      [ Text
"Ask the producer to try to find an improved intersection point between "
      , Text
"the consumer and producer's chains. The consumer sends a sequence of "
      , Text
"points and it is up to the producer to find the first intersection point "
      , Text
"on its chain and send it back to the consumer."
      ]
    documentFor (Namespace [Text]
_ [Text
"IntersectFound"]) = forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ forall a. Monoid a => [a] -> a
mconcat
      [ Text
"The reply to the consumer about an intersection found. "
      , Text
"The consumer can decide weather to send more points. "
      , Text
"\n "
      , Text
"The message also tells the consumer about the head point of the producer."
      ]
    documentFor (Namespace [Text]
_ [Text
"IntersectNotFound"]) = forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ forall a. Monoid a => [a] -> a
mconcat
      [ Text
"The reply to the consumer that no intersection was found: none of the "
      , Text
"points the consumer supplied are on the producer chain. "
      , Text
"\n "
      , Text
"The message also tells the consumer about the head point of the producer."
      ]
    documentFor (Namespace [Text]
_ [Text
"Done"]) = forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ forall a. Monoid a => [a] -> a
mconcat
      [ Text
"We have to explain to the framework what our states mean, in terms of "
      , Text
"which party has agency in each state. "
      , Text
"\n "
      , Text
"Idle states are where it is for the client to send a message, "
      , Text
"busy states are where the server is expected to send a reply."
      ]
    documentFor Namespace (AnyMessageAndAgency (ChainSync blk pt tip))
_ = forall a. Maybe a
Nothing

    allNamespaces :: [Namespace (AnyMessageAndAgency (ChainSync blk pt tip))]
allNamespaces = [
        forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"RequestNext"]
      , forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"AwaitReply"]
      , forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"RollForward"]
      , forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"RollBackward"]
      , forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"FindIntersect"]
      , forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"IntersectFound"]
      , forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"IntersectNotFound"]
      , forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Done"]
      ]


--------------------------------------------------------------------------------
-- LocalTxMonitor Tracer
--------------------------------------------------------------------------------

instance LogFormatting (AnyMessageAndAgency (LTM.LocalTxMonitor txid tx slotNo)) where
  forMachine :: DetailLevel
-> AnyMessageAndAgency (LocalTxMonitor txid tx slotNo) -> Object
forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok LTM.MsgAcquire {}) =
    forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgAcquire"
             , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
             ]
  forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok LTM.MsgAcquired {}) =
    forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgAcquired"
             , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
             ]
  forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok LTM.MsgAwaitAcquire {}) =
    forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgAwaitAcquire"
             , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
             ]
  forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok LTM.MsgNextTx {}) =
    forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgNextTx"
             , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
             ]
  forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok LTM.MsgReplyNextTx {}) =
    forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgReplyNextTx"
             , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
             ]
  forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok LTM.MsgHasTx {}) =
    forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgHasTx"
             , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
             ]
  forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok LTM.MsgReplyHasTx {}) =
    forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgReplyHasTx"
             , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
             ]
  forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok LTM.MsgGetSizes {}) =
    forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgGetSizes"
             , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
             ]
  forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok LTM.MsgReplyGetSizes {}) =
    forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgReplyGetSizes"
             , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
             ]
  forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok LTM.MsgRelease {}) =
    forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgRelease"
             , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
             ]
  forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok LTM.MsgDone {}) =
    forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgDone"
             , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
             ]

instance MetaTrace (AnyMessageAndAgency (LTM.LocalTxMonitor txid tx slotNo)) where
    namespaceFor :: AnyMessageAndAgency (LocalTxMonitor txid tx slotNo)
-> Namespace (AnyMessageAndAgency (LocalTxMonitor txid tx slotNo))
namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency LTM.MsgAcquire {}) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Acquire"]
    namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency LTM.MsgAcquired {}) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Acquired"]
    namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency LTM.MsgAwaitAcquire {}) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"AwaitAcquire"]
    namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency LTM.MsgNextTx {}) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"NextTx"]
    namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency LTM.MsgReplyNextTx {}) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"ReplyNextTx"]
    namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency LTM.MsgHasTx {}) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"HasTx"]
    namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency LTM.MsgReplyHasTx {}) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"ReplyHasTx"]
    namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency LTM.MsgGetSizes {}) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"GetSizes"]
    namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency LTM.MsgReplyGetSizes {}) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"ReplyGetSizes"]
    namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency LTM.MsgRelease {}) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Release"]
    namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency LTM.MsgDone {}) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Done"]

    severityFor :: Namespace (AnyMessageAndAgency (LocalTxMonitor txid tx slotNo))
-> Maybe (AnyMessageAndAgency (LocalTxMonitor txid tx slotNo))
-> Maybe SeverityS
severityFor (Namespace [Text]
_ [Text
"Acquire"]) Maybe (AnyMessageAndAgency (LocalTxMonitor txid tx slotNo))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor (Namespace [Text]
_ [Text
"Acquired"]) Maybe (AnyMessageAndAgency (LocalTxMonitor txid tx slotNo))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor (Namespace [Text]
_ [Text
"AwaitAcquire"]) Maybe (AnyMessageAndAgency (LocalTxMonitor txid tx slotNo))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor (Namespace [Text]
_ [Text
"NextTx"]) Maybe (AnyMessageAndAgency (LocalTxMonitor txid tx slotNo))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor (Namespace [Text]
_ [Text
"ReplyNextTx"]) Maybe (AnyMessageAndAgency (LocalTxMonitor txid tx slotNo))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor (Namespace [Text]
_ [Text
"HasTx"]) Maybe (AnyMessageAndAgency (LocalTxMonitor txid tx slotNo))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor (Namespace [Text]
_ [Text
"ReplyHasTx"]) Maybe (AnyMessageAndAgency (LocalTxMonitor txid tx slotNo))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor (Namespace [Text]
_ [Text
"GetSizes"]) Maybe (AnyMessageAndAgency (LocalTxMonitor txid tx slotNo))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor (Namespace [Text]
_ [Text
"ReplyGetSizes"]) Maybe (AnyMessageAndAgency (LocalTxMonitor txid tx slotNo))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor (Namespace [Text]
_ [Text
"Release"]) Maybe (AnyMessageAndAgency (LocalTxMonitor txid tx slotNo))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor (Namespace [Text]
_ [Text
"Done"]) Maybe (AnyMessageAndAgency (LocalTxMonitor txid tx slotNo))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor Namespace (AnyMessageAndAgency (LocalTxMonitor txid tx slotNo))
_ Maybe (AnyMessageAndAgency (LocalTxMonitor txid tx slotNo))
_ = forall a. Maybe a
Nothing

    documentFor :: Namespace (AnyMessageAndAgency (LocalTxMonitor txid tx slotNo))
-> Maybe Text
documentFor (Namespace [Text]
_ [Text
"Acquire"]) = forall a. a -> Maybe a
Just
      Text
""
    documentFor (Namespace [Text]
_ [Text
"Acquired"]) = forall a. a -> Maybe a
Just
      Text
""
    documentFor (Namespace [Text]
_ [Text
"AwaitAcquire"]) = forall a. a -> Maybe a
Just
      Text
""
    documentFor (Namespace [Text]
_ [Text
"NextTx"]) = forall a. a -> Maybe a
Just
      Text
""
    documentFor (Namespace [Text]
_ [Text
"ReplyNextTx"]) = forall a. a -> Maybe a
Just
      Text
""
    documentFor (Namespace [Text]
_ [Text
"HasTx"]) = forall a. a -> Maybe a
Just
      Text
""
    documentFor (Namespace [Text]
_ [Text
"ReplyHasTx"]) = forall a. a -> Maybe a
Just
      Text
""
    documentFor (Namespace [Text]
_ [Text
"GetSizes"]) = forall a. a -> Maybe a
Just
      Text
""
    documentFor (Namespace [Text]
_ [Text
"ReplyGetSizes"]) = forall a. a -> Maybe a
Just
      Text
""
    documentFor (Namespace [Text]
_ [Text
"Release"]) = forall a. a -> Maybe a
Just
      Text
""
    documentFor (Namespace [Text]
_ [Text
"Done"]) = forall a. a -> Maybe a
Just
      Text
""
    documentFor Namespace (AnyMessageAndAgency (LocalTxMonitor txid tx slotNo))
_ = forall a. Maybe a
Nothing

    allNamespaces :: [Namespace (AnyMessageAndAgency (LocalTxMonitor txid tx slotNo))]
allNamespaces = [
        forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Acquire"]
      , forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Acquired"]
      , forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"AwaitAcquire"]
      , forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"NextTx"]
      , forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"ReplyNextTx"]
      , forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"HasTx"]
      , forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"ReplyHasTx"]
      , forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"GetSizes"]
      , forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"ReplyGetSizes"]
      , forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Release"]
      , forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Done"]
      ]
--------------------------------------------------------------------------------
-- LocalTxSubmission Tracer
--------------------------------------------------------------------------------

instance LogFormatting (AnyMessageAndAgency (LTS.LocalTxSubmission tx err)) where
  forMachine :: DetailLevel
-> AnyMessageAndAgency (LocalTxSubmission tx err) -> Object
forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok LTS.MsgSubmitTx{}) =
    forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgSubmitTx"
             , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
             ]
  forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok LTS.MsgAcceptTx{}) =
    forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgAcceptTx"
             , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
             ]
  forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok LTS.MsgRejectTx{}) =
    forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgRejectTx"
             , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
             ]
  forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok LTS.MsgDone{}) =
    forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgDone"
             , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
             ]

instance MetaTrace (AnyMessageAndAgency (LTS.LocalTxSubmission tx err)) where
    namespaceFor :: AnyMessageAndAgency (LocalTxSubmission tx err)
-> Namespace (AnyMessageAndAgency (LocalTxSubmission tx err))
namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency LTS.MsgSubmitTx{}) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"SubmitTx"]
    namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency LTS.MsgAcceptTx{}) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"AcceptTx"]
    namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency LTS.MsgRejectTx{}) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"RejectTx"]
    namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency LTS.MsgDone{}) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Done"]

    severityFor :: Namespace (AnyMessageAndAgency (LocalTxSubmission tx err))
-> Maybe (AnyMessageAndAgency (LocalTxSubmission tx err))
-> Maybe SeverityS
severityFor (Namespace [Text]
_ [Text
"SubmitTx"]) Maybe (AnyMessageAndAgency (LocalTxSubmission tx err))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor (Namespace [Text]
_ [Text
"AcceptTx"]) Maybe (AnyMessageAndAgency (LocalTxSubmission tx err))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor (Namespace [Text]
_ [Text
"RejectTx"]) Maybe (AnyMessageAndAgency (LocalTxSubmission tx err))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor (Namespace [Text]
_ [Text
"Done"]) Maybe (AnyMessageAndAgency (LocalTxSubmission tx err))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor Namespace (AnyMessageAndAgency (LocalTxSubmission tx err))
_ Maybe (AnyMessageAndAgency (LocalTxSubmission tx err))
_ = forall a. Maybe a
Nothing

    documentFor :: Namespace (AnyMessageAndAgency (LocalTxSubmission tx err))
-> Maybe Text
documentFor (Namespace [Text]
_ [Text
"SubmitTx"]) = forall a. a -> Maybe a
Just
      Text
"The client submits a single transaction and waits a reply."
    documentFor (Namespace [Text]
_ [Text
"AcceptTx"]) = forall a. a -> Maybe a
Just
      Text
"The server can reply to inform the client that it has accepted the \
        \transaction."
    documentFor (Namespace [Text]
_ [Text
"RejectTx"]) = forall a. a -> Maybe a
Just
      Text
"The server can reply to inform the client that it has rejected the \
        \transaction. A reason for the rejection is included."
    documentFor (Namespace [Text]
_ [Text
"Done"]) = forall a. a -> Maybe a
Just
      Text
"The client can terminate the protocol."
    documentFor Namespace (AnyMessageAndAgency (LocalTxSubmission tx err))
_ = forall a. Maybe a
Nothing

    allNamespaces :: [Namespace (AnyMessageAndAgency (LocalTxSubmission tx err))]
allNamespaces = [
        forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"SubmitTx"]
      , forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"AcceptTx"]
      , forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"RejectTx"]
      , forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Done"]
      ]
--------------------------------------------------------------------------------
-- TStateQuery Tracer
--------------------------------------------------------------------------------

instance (forall result. Show (Query blk result))
      => LogFormatting (AnyMessageAndAgency (LSQ.LocalStateQuery blk pt (Query blk))) where
  forMachine :: DetailLevel
-> AnyMessageAndAgency (LocalStateQuery blk pt (Query blk))
-> Object
forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok LSQ.MsgAcquire{}) =
    forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgAcquire"
             , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
             ]
  forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok LSQ.MsgAcquired{}) =
    forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgAcquired"
             , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
             ]
  forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok LSQ.MsgFailure{}) =
    forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgFailure"
             , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
             ]
  forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok LSQ.MsgQuery{}) =
    forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgQuery"
             , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
             ]
  forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok LSQ.MsgResult{}) =
    forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgResult"
             , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
             ]
  forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok LSQ.MsgRelease{}) =
    forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgRelease"
             , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
             ]
  forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok LSQ.MsgReAcquire{}) =
    forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgReAcquire"
             , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
             ]
  forMachine DetailLevel
_dtal (AnyMessageAndAgency PeerHasAgency pr st
stok LSQ.MsgDone{}) =
    forall a. Monoid a => [a] -> a
mconcat [ Key
"kind" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgDone"
             , Key
"agency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show PeerHasAgency pr st
stok)
             ]

instance MetaTrace (AnyMessageAndAgency (LSQ.LocalStateQuery blk pt (Query blk))) where
    namespaceFor :: AnyMessageAndAgency (LocalStateQuery blk pt (Query blk))
-> Namespace
     (AnyMessageAndAgency (LocalStateQuery blk pt (Query blk)))
namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency LSQ.MsgAcquire{}) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Acquire"]
    namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency LSQ.MsgAcquired{}) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Acquired"]
    namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency LSQ.MsgFailure{}) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Failure"]
    namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency LSQ.MsgQuery{}) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Query"]
    namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency LSQ.MsgResult{}) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Result"]
    namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency LSQ.MsgRelease{}) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Release"]
    namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency LSQ.MsgReAcquire{}) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"ReAcquire"]
    namespaceFor (AnyMessageAndAgency PeerHasAgency pr st
_agency LSQ.MsgDone{}) =
      forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Done"]

    severityFor :: Namespace
  (AnyMessageAndAgency (LocalStateQuery blk pt (Query blk)))
-> Maybe (AnyMessageAndAgency (LocalStateQuery blk pt (Query blk)))
-> Maybe SeverityS
severityFor (Namespace [Text]
_ [Text
"Acquire"]) Maybe (AnyMessageAndAgency (LocalStateQuery blk pt (Query blk)))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor (Namespace [Text]
_ [Text
"Acquired"]) Maybe (AnyMessageAndAgency (LocalStateQuery blk pt (Query blk)))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor (Namespace [Text]
_ [Text
"Failure"]) Maybe (AnyMessageAndAgency (LocalStateQuery blk pt (Query blk)))
_ = forall a. a -> Maybe a
Just SeverityS
Warning
    severityFor (Namespace [Text]
_ [Text
"Query"]) Maybe (AnyMessageAndAgency (LocalStateQuery blk pt (Query blk)))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor (Namespace [Text]
_ [Text
"Result"]) Maybe (AnyMessageAndAgency (LocalStateQuery blk pt (Query blk)))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor (Namespace [Text]
_ [Text
"Release"]) Maybe (AnyMessageAndAgency (LocalStateQuery blk pt (Query blk)))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor (Namespace [Text]
_ [Text
"ReAcquire"]) Maybe (AnyMessageAndAgency (LocalStateQuery blk pt (Query blk)))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor (Namespace [Text]
_ [Text
"Done"]) Maybe (AnyMessageAndAgency (LocalStateQuery blk pt (Query blk)))
_ = forall a. a -> Maybe a
Just SeverityS
Info
    severityFor Namespace
  (AnyMessageAndAgency (LocalStateQuery blk pt (Query blk)))
_ Maybe (AnyMessageAndAgency (LocalStateQuery blk pt (Query blk)))
_ = forall a. Maybe a
Nothing

    documentFor :: Namespace
  (AnyMessageAndAgency (LocalStateQuery blk pt (Query blk)))
-> Maybe Text
documentFor (Namespace [Text]
_ [Text
"Acquire"]) = forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ forall a. Monoid a => [a] -> a
mconcat
      [ Text
"The client requests that the state as of a particular recent point on "
      , Text
"the server's chain (within K of the tip) be made available to query, "
      , Text
"and waits for confirmation or failure. "
      , Text
"\n "
      , Text
"From 'NodeToClient_V8' onwards if the point is not specified, current tip "
      , Text
"will be acquired.  For previous versions of the protocol 'point' must be "
      , Text
"given."
      ]
    documentFor (Namespace [Text]
_ [Text
"Acquired"]) = forall a. a -> Maybe a
Just
      Text
"The server can confirm that it has the state at the requested point."
    documentFor (Namespace [Text]
_ [Text
"Failure"]) = forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ forall a. Monoid a => [a] -> a
mconcat
      [ Text
"The server can report that it cannot obtain the state for the "
      , Text
"requested point."
      ]
    documentFor (Namespace [Text]
_ [Text
"Query"]) = forall a. a -> Maybe a
Just
      Text
"The client can perform queries on the current acquired state."
    documentFor (Namespace [Text]
_ [Text
"Result"]) = forall a. a -> Maybe a
Just
      Text
"The server must reply with the queries."
    documentFor (Namespace [Text]
_ [Text
"Release"]) = forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ forall a. Monoid a => [a] -> a
mconcat
      [ Text
"The client can instruct the server to release the state. This lets "
      , Text
"the server free resources."
      ]
    documentFor (Namespace [Text]
_ [Text
"ReAcquire"]) = forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ forall a. Monoid a => [a] -> a
mconcat
      [ Text
"This is like 'MsgAcquire' but for when the client already has a "
      , Text
"state. By moving to another state directly without a 'MsgRelease' it "
      , Text
"enables optimisations on the server side (e.g. moving to the state for "
      , Text
"the immediate next block). "
      , Text
"\n "
      , Text
"Note that failure to re-acquire is equivalent to 'MsgRelease', "
      , Text
"rather than keeping the exiting acquired state. "
      , Text
"\n "
      , Text
"From 'NodeToClient_V8' onwards if the point is not specified, current tip "
      , Text
"will be acquired.  For previous versions of the protocol 'point' must be "
      , Text
"given."
      ]
    documentFor (Namespace [Text]
_ [Text
"Done"]) = forall a. a -> Maybe a
Just
      Text
"The client can terminate the protocol."
    documentFor Namespace
  (AnyMessageAndAgency (LocalStateQuery blk pt (Query blk)))
_ = forall a. Maybe a
Nothing

    allNamespaces :: [Namespace
   (AnyMessageAndAgency (LocalStateQuery blk pt (Query blk)))]
allNamespaces = [
        forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Acquire"]
      , forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Acquired"]
      , forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Failure"]
      , forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Query"]
      , forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Result"]
      , forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Release"]
      , forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"ReAcquire"]
      , forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Done"]
      ]