{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -Wno-orphans #-}
module Ouroboros.Network.OrphanInstances where
import Cardano.Network.NodeToClient (LocalAddress (..), ProtocolLimitFailure)
import Control.Applicative (Alternative ((<|>)))
import Control.Exception (Exception (..))
import Control.Monad (zipWithM)
import Control.Monad.Class.MonadTime.SI (Time (..))
import Data.Aeson
import Data.Aeson.Types (Pair, Parser, listValue)
import Data.Bifunctor (first)
import Data.Foldable (toList)
import Data.IP (fromHostAddress, fromHostAddress6)
import Data.Map.Strict qualified as Map
import Data.Maybe (fromMaybe)
import Data.Set qualified as Set
import Data.Text (Text, pack)
import Data.Text.Encoding qualified as Text
import Data.Text.Encoding.Error qualified as Text
import Network.Mux.Trace qualified as Mux
import Network.Mux.Types qualified as Mux
import Network.Socket (SockAddr (..))
import Network.TypedProtocol.Codec (AnyMessage (..))
import Ouroboros.Network.Protocol.Handshake (HandshakeException (..),
HandshakeProtocolError (..), RefuseReason (..))
import Ouroboros.Network.Protocol.Handshake.Type (Handshake, Message (..))
import Ouroboros.Network.Protocol.KeepAlive.Type (KeepAlive)
import Ouroboros.Network.Protocol.KeepAlive.Type qualified as KeepAlive
import Ouroboros.Network.Protocol.Limits
(ProtocolLimitFailure (ExceededSizeLimit, ExceededTimeLimit))
import Ouroboros.Network.Protocol.PeerSharing.Type (PeerSharingAmount (..))
import Ouroboros.Network.Protocol.PeerSharing.Type qualified as PeerSharing
import Ouroboros.Network.Protocol.TxSubmission2.Type (TxSubmission2)
import Ouroboros.Network.Protocol.TxSubmission2.Type qualified as Tx
import Ouroboros.Network.Block (SlotNo (SlotNo))
import Ouroboros.Network.BlockFetch.Decision (FetchDecision)
import Ouroboros.Network.ConnectionHandler (ConnectionHandlerTrace (..))
import Ouroboros.Network.ConnectionId (ConnectionId (..))
import Ouroboros.Network.ConnectionManager.Core as ConnMgr
import Ouroboros.Network.ConnectionManager.State (ConnMap (..),
ConnStateId (..), LocalAddr (..))
import Ouroboros.Network.ConnectionManager.Types (AbstractState (..),
ConnectionManagerCounters (..), MaybeUnknown (..),
OperationResult (..))
import Ouroboros.Network.ConnectionManager.Types qualified as ConnMgr
import Ouroboros.Network.DeltaQ (GSV (GSV),
PeerGSV (PeerGSV, inboundGSV, outboundGSV))
import Ouroboros.Network.Diffusion.Topology (LocalRootPeersGroup (..),
LocalRootPeersGroups (..), NetworkTopology (..),
PublicRootPeers (..), RootConfig (..))
import Ouroboros.Network.Diffusion.Types (DiffusionTracer (..))
import Ouroboros.Network.Driver.Simple
import Ouroboros.Network.ExitPolicy (RepromoteDelay (repromoteDelay))
import Ouroboros.Network.InboundGovernor qualified as InboundGovernor
import Ouroboros.Network.InboundGovernor.State (RemoteSt)
import Ouroboros.Network.InboundGovernor.State qualified as InboundGovernor
import Ouroboros.Network.Mux (MiniProtocolNum (..))
import Ouroboros.Network.NodeToNode.Version (DiffusionMode (..))
import Ouroboros.Network.PeerSelection hiding (PublicRootPeers)
import Ouroboros.Network.PeerSelection.Governor.Types (AssociationMode (..),
DebugPeerSelectionState (..), PeerSharingResult (..),
TracePeerSelection (..))
import Ouroboros.Network.PeerSelection.LedgerPeers (PoolStake (..))
import Ouroboros.Network.PeerSelection.PublicRootPeers qualified as PublicRootPeers
import Ouroboros.Network.PeerSelection.RootPeersDNS
import Ouroboros.Network.PeerSelection.State.KnownPeers
(KnownPeerInfo (KnownPeerInfo))
import Ouroboros.Network.PeerSelection.State.KnownPeers qualified as KnownPeers
import Ouroboros.Network.PeerSelection.State.LocalRootPeers
(HotValency (HotValency),
LocalRootConfig (LocalRootConfig, peerAdvertise), LocalRootPeers,
WarmValency (WarmValency))
import Ouroboros.Network.PeerSelection.State.LocalRootPeers qualified as LocalRootPeers
import Ouroboros.Network.PeerSelection.State.LocalRootPeers qualified as LRP
import Ouroboros.Network.Server qualified as Server
import Ouroboros.Network.Server.RateLimiting (AcceptConnectionsPolicyTrace (..),
AcceptedConnectionsLimit (..))
import Ouroboros.Network.Snocket (RemoteAddress)
kindObject :: Text -> [Pair] -> Value
kindObject :: Text -> [Pair] -> Value
kindObject Text
k [Pair]
fields = [Pair] -> Value
object ([Pair] -> Value) -> [Pair] -> Value
forall a b. (a -> b) -> a -> b
$ (Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
k) Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
fields
instance FromJSON RootConfig where
parseJSON :: Value -> Parser RootConfig
parseJSON = String
-> (Object -> Parser RootConfig) -> Value -> Parser RootConfig
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"RootConfig" ((Object -> Parser RootConfig) -> Value -> Parser RootConfig)
-> (Object -> Parser RootConfig) -> Value -> Parser RootConfig
forall a b. (a -> b) -> a -> b
$ \Object
o ->
[RelayAccessPoint] -> PeerAdvertise -> RootConfig
RootConfig
([RelayAccessPoint] -> PeerAdvertise -> RootConfig)
-> Parser [RelayAccessPoint]
-> Parser (PeerAdvertise -> RootConfig)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser [RelayAccessPoint]
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"accessPoints"
Parser (PeerAdvertise -> RootConfig)
-> Parser PeerAdvertise -> Parser RootConfig
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe PeerAdvertise)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"advertise" Parser (Maybe PeerAdvertise)
-> PeerAdvertise -> Parser PeerAdvertise
forall a. Parser (Maybe a) -> a -> Parser a
.!= PeerAdvertise
DoNotAdvertisePeer
instance ToJSON RootConfig where
toJSON :: RootConfig -> Value
toJSON RootConfig
ra = [Pair] -> Value
object
[ Key
"accessPoints" Key -> [RelayAccessPoint] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= RootConfig -> [RelayAccessPoint]
rootAccessPoints RootConfig
ra
, Key
"advertise" Key -> PeerAdvertise -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= RootConfig -> PeerAdvertise
rootAdvertise RootConfig
ra
]
instance FromJSON DiffusionMode where
parseJSON :: Value -> Parser DiffusionMode
parseJSON = String
-> (Text -> Parser DiffusionMode) -> Value -> Parser DiffusionMode
forall a. String -> (Text -> Parser a) -> Value -> Parser a
withText String
"DiffusionMode" ((Text -> Parser DiffusionMode) -> Value -> Parser DiffusionMode)
-> (Text -> Parser DiffusionMode) -> Value -> Parser DiffusionMode
forall a b. (a -> b) -> a -> b
$ \Text
str ->
case Text
str of
Text
"InitiatorOnly" -> DiffusionMode -> Parser DiffusionMode
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure DiffusionMode
InitiatorOnlyDiffusionMode
Text
"InitiatorAndResponder" -> DiffusionMode -> Parser DiffusionMode
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure DiffusionMode
InitiatorAndResponderDiffusionMode
Text
_ -> String -> Parser DiffusionMode
forall a. String -> Parser a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail String
"Parsing NodeDiffusionMode failed: can be either 'InitiatorOnly' or 'InitiatorAndResponder'"
instance ToJSON DiffusionMode where
toJSON :: DiffusionMode -> Value
toJSON = Text -> Value
String (Text -> Value)
-> (DiffusionMode -> Text) -> DiffusionMode -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Text
pack (String -> Text)
-> (DiffusionMode -> String) -> DiffusionMode -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DiffusionMode -> String
forall a. Show a => a -> String
show
localRootPeersGroupFromJSON
:: (Object -> Parser extraFlags)
-> Object
-> Parser (LocalRootPeersGroup extraFlags)
localRootPeersGroupFromJSON :: forall extraFlags.
(Object -> Parser extraFlags)
-> Object -> Parser (LocalRootPeersGroup extraFlags)
localRootPeersGroupFromJSON Object -> Parser extraFlags
parseExtraFlags Object
o = do
hv@(HotValency v) <- Object
o Object -> Key -> Parser HotValency
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"valency"
Parser HotValency -> Parser HotValency -> Parser HotValency
forall a. Parser a -> Parser a -> Parser a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> Object
o Object -> Key -> Parser HotValency
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"hotValency"
LocalRootPeersGroup
<$> parseJSON (Object o)
<*> pure hv
<*> o .:? "warmValency" .!= WarmValency v
<*> (fromMaybe InitiatorAndResponderDiffusionMode
<$> o .:? "diffusionMode")
<*> parseExtraFlags o
localRootPeersGroupToJSON :: (extraFlags -> Maybe (Key, Value))
-> LocalRootPeersGroup extraFlags
-> Value
localRootPeersGroupToJSON :: forall extraFlags.
(extraFlags -> Maybe Pair)
-> LocalRootPeersGroup extraFlags -> Value
localRootPeersGroupToJSON extraFlags -> Maybe Pair
extraFlagsToJSON LocalRootPeersGroup extraFlags
lrpg =
Object -> Value
Object (Object -> Value) -> Object -> Value
forall a b. (a -> b) -> a -> b
$
(Key
"accessPoints" Key -> [RelayAccessPoint] -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValueOmit e kv, ToJSON v) => Key -> v -> kv
.?= RootConfig -> [RelayAccessPoint]
rootAccessPoints (LocalRootPeersGroup extraFlags -> RootConfig
forall extraFlags. LocalRootPeersGroup extraFlags -> RootConfig
localRoots LocalRootPeersGroup extraFlags
lrpg))
Object -> Object -> Object
forall a. Semigroup a => a -> a -> a
<> (Key
"advertise" Key -> PeerAdvertise -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValueOmit e kv, ToJSON v) => Key -> v -> kv
.?= RootConfig -> PeerAdvertise
rootAdvertise (LocalRootPeersGroup extraFlags -> RootConfig
forall extraFlags. LocalRootPeersGroup extraFlags -> RootConfig
localRoots LocalRootPeersGroup extraFlags
lrpg))
Object -> Object -> Object
forall a. Semigroup a => a -> a -> a
<> (Key
"hotValency" Key -> HotValency -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValueOmit e kv, ToJSON v) => Key -> v -> kv
.?= LocalRootPeersGroup extraFlags -> HotValency
forall extraFlags. LocalRootPeersGroup extraFlags -> HotValency
hotValency LocalRootPeersGroup extraFlags
lrpg)
Object -> Object -> Object
forall a. Semigroup a => a -> a -> a
<> (Key
"warmValency" Key -> WarmValency -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValueOmit e kv, ToJSON v) => Key -> v -> kv
.?= LocalRootPeersGroup extraFlags -> WarmValency
forall extraFlags. LocalRootPeersGroup extraFlags -> WarmValency
warmValency LocalRootPeersGroup extraFlags
lrpg)
Object -> Object -> Object
forall a. Semigroup a => a -> a -> a
<> (case Maybe Pair
mv of
Maybe Pair
Nothing -> Object
forall a. Monoid a => a
mempty
Just (Key
k, Value
v) -> Key
k Key -> Value -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValueOmit e kv, ToJSON v) => Key -> v -> kv
.?= Value
v)
Object -> Object -> Object
forall a. Semigroup a => a -> a -> a
<> (Key
"diffusionMode" Key -> DiffusionMode -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValueOmit e kv, ToJSON v) => Key -> v -> kv
.?= LocalRootPeersGroup extraFlags -> DiffusionMode
forall extraFlags. LocalRootPeersGroup extraFlags -> DiffusionMode
rootDiffusionMode LocalRootPeersGroup extraFlags
lrpg)
where
mv :: Maybe Pair
mv = extraFlags -> Maybe Pair
extraFlagsToJSON (LocalRootPeersGroup extraFlags -> extraFlags
forall extraFlags. LocalRootPeersGroup extraFlags -> extraFlags
extraFlags LocalRootPeersGroup extraFlags
lrpg)
localRootPeersGroupsFromJSON
:: (Object -> Parser extraFlags)
-> Value
-> Parser (LocalRootPeersGroups extraFlags)
localRootPeersGroupsFromJSON :: forall extraFlags.
(Object -> Parser extraFlags)
-> Value -> Parser (LocalRootPeersGroups extraFlags)
localRootPeersGroupsFromJSON Object -> Parser extraFlags
parseExtraFlags =
String
-> (Array -> Parser (LocalRootPeersGroups extraFlags))
-> Value
-> Parser (LocalRootPeersGroups extraFlags)
forall a. String -> (Array -> Parser a) -> Value -> Parser a
withArray String
"[]" ((Array -> Parser (LocalRootPeersGroups extraFlags))
-> Value -> Parser (LocalRootPeersGroups extraFlags))
-> (Array -> Parser (LocalRootPeersGroups extraFlags))
-> Value
-> Parser (LocalRootPeersGroups extraFlags)
forall a b. (a -> b) -> a -> b
$ \Array
a ->
([LocalRootPeersGroup extraFlags]
-> LocalRootPeersGroups extraFlags)
-> Parser [LocalRootPeersGroup extraFlags]
-> Parser (LocalRootPeersGroups extraFlags)
forall a b. (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap [LocalRootPeersGroup extraFlags] -> LocalRootPeersGroups extraFlags
forall extraFlags.
[LocalRootPeersGroup extraFlags] -> LocalRootPeersGroups extraFlags
LocalRootPeersGroups
(Parser [LocalRootPeersGroup extraFlags]
-> Parser (LocalRootPeersGroups extraFlags))
-> (Array -> Parser [LocalRootPeersGroup extraFlags])
-> Array
-> Parser (LocalRootPeersGroups extraFlags)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Int -> Value -> Parser (LocalRootPeersGroup extraFlags))
-> [Int] -> [Value] -> Parser [LocalRootPeersGroup extraFlags]
forall (m :: * -> *) a b c.
Applicative m =>
(a -> b -> m c) -> [a] -> [b] -> m [c]
zipWithM
((Value -> Parser (LocalRootPeersGroup extraFlags))
-> Int -> Value -> Parser (LocalRootPeersGroup extraFlags)
forall a. (Value -> Parser a) -> Int -> Value -> Parser a
parseIndexedJSON ((Value -> Parser (LocalRootPeersGroup extraFlags))
-> Int -> Value -> Parser (LocalRootPeersGroup extraFlags))
-> (Value -> Parser (LocalRootPeersGroup extraFlags))
-> Int
-> Value
-> Parser (LocalRootPeersGroup extraFlags)
forall a b. (a -> b) -> a -> b
$ String
-> (Object -> Parser (LocalRootPeersGroup extraFlags))
-> Value
-> Parser (LocalRootPeersGroup extraFlags)
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"LocalRootPeersGroup" ((Object -> Parser extraFlags)
-> Object -> Parser (LocalRootPeersGroup extraFlags)
forall extraFlags.
(Object -> Parser extraFlags)
-> Object -> Parser (LocalRootPeersGroup extraFlags)
localRootPeersGroupFromJSON Object -> Parser extraFlags
parseExtraFlags))
[Int
0..]
([Value] -> Parser [LocalRootPeersGroup extraFlags])
-> (Array -> [Value])
-> Array
-> Parser [LocalRootPeersGroup extraFlags]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Array -> [Value]
forall a. Vector a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList
(Array -> Parser (LocalRootPeersGroups extraFlags))
-> Array -> Parser (LocalRootPeersGroups extraFlags)
forall a b. (a -> b) -> a -> b
$ Array
a
localRootPeersGroupsToJSON
:: (extraFlags -> Maybe (Key, Value))
-> LocalRootPeersGroups extraFlags
-> Value
localRootPeersGroupsToJSON :: forall extraFlags.
(extraFlags -> Maybe Pair)
-> LocalRootPeersGroups extraFlags -> Value
localRootPeersGroupsToJSON extraFlags -> Maybe Pair
extraFlagsToJSON LocalRootPeersGroups {[LocalRootPeersGroup extraFlags]
groups :: [LocalRootPeersGroup extraFlags]
groups :: forall extraFlags.
LocalRootPeersGroups extraFlags -> [LocalRootPeersGroup extraFlags]
groups} =
(LocalRootPeersGroup extraFlags -> Value)
-> [LocalRootPeersGroup extraFlags] -> Value
forall a. (a -> Value) -> [a] -> Value
listValue ((extraFlags -> Maybe Pair)
-> LocalRootPeersGroup extraFlags -> Value
forall extraFlags.
(extraFlags -> Maybe Pair)
-> LocalRootPeersGroup extraFlags -> Value
localRootPeersGroupToJSON extraFlags -> Maybe Pair
extraFlagsToJSON) [LocalRootPeersGroup extraFlags]
groups
instance FromJSON PublicRootPeers where
parseJSON :: Value -> Parser PublicRootPeers
parseJSON = (RootConfig -> PublicRootPeers)
-> Parser RootConfig -> Parser PublicRootPeers
forall a b. (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap RootConfig -> PublicRootPeers
PublicRootPeers (Parser RootConfig -> Parser PublicRootPeers)
-> (Value -> Parser RootConfig) -> Value -> Parser PublicRootPeers
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Parser RootConfig
forall a. FromJSON a => Value -> Parser a
parseJSON
instance ToJSON PublicRootPeers where
toJSON :: PublicRootPeers -> Value
toJSON = RootConfig -> Value
forall a. ToJSON a => a -> Value
toJSON (RootConfig -> Value)
-> (PublicRootPeers -> RootConfig) -> PublicRootPeers -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PublicRootPeers -> RootConfig
publicRoots
networkTopologyFromJSON
:: (Value -> Parser (LocalRootPeersGroups extraFlags))
-> (Object -> Parser extraConfig)
-> Value
-> Parser (NetworkTopology extraConfig extraFlags)
networkTopologyFromJSON :: forall extraFlags extraConfig.
(Value -> Parser (LocalRootPeersGroups extraFlags))
-> (Object -> Parser extraConfig)
-> Value
-> Parser (NetworkTopology extraConfig extraFlags)
networkTopologyFromJSON Value -> Parser (LocalRootPeersGroups extraFlags)
parseLocalRoots Object -> Parser extraConfig
parseExtraConfig =
String
-> (Object -> Parser (NetworkTopology extraConfig extraFlags))
-> Value
-> Parser (NetworkTopology extraConfig extraFlags)
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"NetworkTopology" ((Object -> Parser (NetworkTopology extraConfig extraFlags))
-> Value -> Parser (NetworkTopology extraConfig extraFlags))
-> (Object -> Parser (NetworkTopology extraConfig extraFlags))
-> Value
-> Parser (NetworkTopology extraConfig extraFlags)
forall a b. (a -> b) -> a -> b
$ \Object
o ->
LocalRootPeersGroups extraFlags
-> [PublicRootPeers]
-> UseLedgerPeers
-> Maybe String
-> extraConfig
-> NetworkTopology extraConfig extraFlags
forall extraConfig extraFlags.
LocalRootPeersGroups extraFlags
-> [PublicRootPeers]
-> UseLedgerPeers
-> Maybe String
-> extraConfig
-> NetworkTopology extraConfig extraFlags
NetworkTopology (LocalRootPeersGroups extraFlags
-> [PublicRootPeers]
-> UseLedgerPeers
-> Maybe String
-> extraConfig
-> NetworkTopology extraConfig extraFlags)
-> Parser (LocalRootPeersGroups extraFlags)
-> Parser
([PublicRootPeers]
-> UseLedgerPeers
-> Maybe String
-> extraConfig
-> NetworkTopology extraConfig extraFlags)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Object
o Object -> Key -> Parser Value
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"localRoots" Parser Value
-> (Value -> Parser (LocalRootPeersGroups extraFlags))
-> Parser (LocalRootPeersGroups extraFlags)
forall a b. Parser a -> (a -> Parser b) -> Parser b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Value -> Parser (LocalRootPeersGroups extraFlags)
parseLocalRoots)
Parser
([PublicRootPeers]
-> UseLedgerPeers
-> Maybe String
-> extraConfig
-> NetworkTopology extraConfig extraFlags)
-> Parser [PublicRootPeers]
-> Parser
(UseLedgerPeers
-> Maybe String
-> extraConfig
-> NetworkTopology extraConfig extraFlags)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser [PublicRootPeers]
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"publicRoots"
Parser
(UseLedgerPeers
-> Maybe String
-> extraConfig
-> NetworkTopology extraConfig extraFlags)
-> Parser UseLedgerPeers
-> Parser
(Maybe String
-> extraConfig -> NetworkTopology extraConfig extraFlags)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe UseLedgerPeers)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"useLedgerAfterSlot" Parser (Maybe UseLedgerPeers)
-> UseLedgerPeers -> Parser UseLedgerPeers
forall a. Parser (Maybe a) -> a -> Parser a
.!= UseLedgerPeers
DontUseLedgerPeers
Parser
(Maybe String
-> extraConfig -> NetworkTopology extraConfig extraFlags)
-> Parser (Maybe String)
-> Parser (extraConfig -> NetworkTopology extraConfig extraFlags)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe String)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"peerSnapshotFile"
Parser (extraConfig -> NetworkTopology extraConfig extraFlags)
-> Parser extraConfig
-> Parser (NetworkTopology extraConfig extraFlags)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object -> Parser extraConfig
parseExtraConfig Object
o
networkTopologyToJSON
:: (extraConfig -> Maybe (Key, Value))
-> (extraFlags -> Maybe (Key, Value))
-> NetworkTopology extraConfig extraFlags
-> Value
networkTopologyToJSON :: forall extraConfig extraFlags.
(extraConfig -> Maybe Pair)
-> (extraFlags -> Maybe Pair)
-> NetworkTopology extraConfig extraFlags
-> Value
networkTopologyToJSON
extraConfig -> Maybe Pair
extraConfigToJSON
extraFlags -> Maybe Pair
extraFlagsToJSON
NetworkTopology {
LocalRootPeersGroups extraFlags
localRootPeersGroups :: LocalRootPeersGroups extraFlags
localRootPeersGroups :: forall extraConfig extraFlags.
NetworkTopology extraConfig extraFlags
-> LocalRootPeersGroups extraFlags
localRootPeersGroups,
[PublicRootPeers]
publicRootPeers :: [PublicRootPeers]
publicRootPeers :: forall extraConfig extraFlags.
NetworkTopology extraConfig extraFlags -> [PublicRootPeers]
publicRootPeers,
UseLedgerPeers
useLedgerPeers :: UseLedgerPeers
useLedgerPeers :: forall extraConfig extraFlags.
NetworkTopology extraConfig extraFlags -> UseLedgerPeers
useLedgerPeers,
Maybe String
peerSnapshotPath :: Maybe String
peerSnapshotPath :: forall extraConfig extraFlags.
NetworkTopology extraConfig extraFlags -> Maybe String
peerSnapshotPath,
extraConfig
extraConfig :: extraConfig
extraConfig :: forall extraConfig extraFlags.
NetworkTopology extraConfig extraFlags -> extraConfig
extraConfig
} =
Object -> Value
Object (Object -> Value) -> Object -> Value
forall a b. (a -> b) -> a -> b
$
((Value -> Bool) -> (Value -> Value) -> Key -> Value -> Object
forall v. (v -> Bool) -> (v -> Value) -> Key -> v -> Object
forall e kv v.
KeyValueOmit e kv =>
(v -> Bool) -> (v -> e) -> Key -> v -> kv
explicitToFieldOmit (Bool -> Value -> Bool
forall a b. a -> b -> a
const Bool
False) Value -> Value
forall a. a -> a
id Key
"localRoots" ((extraFlags -> Maybe Pair)
-> LocalRootPeersGroups extraFlags -> Value
forall extraFlags.
(extraFlags -> Maybe Pair)
-> LocalRootPeersGroups extraFlags -> Value
localRootPeersGroupsToJSON extraFlags -> Maybe Pair
extraFlagsToJSON LocalRootPeersGroups extraFlags
localRootPeersGroups))
Object -> Object -> Object
forall a. Semigroup a => a -> a -> a
<> (Key
"publicRoots" Key -> [PublicRootPeers] -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValueOmit e kv, ToJSON v) => Key -> v -> kv
.?= [PublicRootPeers]
publicRootPeers)
Object -> Object -> Object
forall a. Semigroup a => a -> a -> a
<> (Key
"useLedgerAfterSlot" Key -> UseLedgerPeers -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValueOmit e kv, ToJSON v) => Key -> v -> kv
.?= UseLedgerPeers
useLedgerPeers)
Object -> Object -> Object
forall a. Semigroup a => a -> a -> a
<> (Key
"peerSnapshotFile" Key -> Maybe String -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValueOmit e kv, ToJSON v) => Key -> v -> kv
.?= Maybe String
peerSnapshotPath)
Object -> Object -> Object
forall a. Semigroup a => a -> a -> a
<> (case Maybe Pair
mv of
Maybe Pair
Nothing -> Object
forall a. Monoid a => a
mempty
Just (Key
k,Value
v) -> Key
k Key -> Value -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValueOmit e kv, ToJSON v) => Key -> v -> kv
.?= Value
v)
where
mv :: Maybe Pair
mv = extraConfig -> Maybe Pair
extraConfigToJSON extraConfig
extraConfig
instance FromJSON PeerSharing where
parseJSON :: Value -> Parser PeerSharing
parseJSON = String
-> (Bool -> Parser PeerSharing) -> Value -> Parser PeerSharing
forall a. String -> (Bool -> Parser a) -> Value -> Parser a
withBool String
"PeerSharing" ((Bool -> Parser PeerSharing) -> Value -> Parser PeerSharing)
-> (Bool -> Parser PeerSharing) -> Value -> Parser PeerSharing
forall a b. (a -> b) -> a -> b
$ \Bool
b ->
PeerSharing -> Parser PeerSharing
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PeerSharing -> Parser PeerSharing)
-> PeerSharing -> Parser PeerSharing
forall a b. (a -> b) -> a -> b
$ if Bool
b then PeerSharing
PeerSharingEnabled
else PeerSharing
PeerSharingDisabled
instance ToJSON PeerSharing where
toJSON :: PeerSharing -> Value
toJSON PeerSharing
PeerSharingEnabled = Bool -> Value
Bool Bool
True
toJSON PeerSharing
PeerSharingDisabled = Bool -> Value
Bool Bool
False
instance FromJSON UseLedgerPeers where
parseJSON :: Value -> Parser UseLedgerPeers
parseJSON = \case
Number Scientific
slot -> UseLedgerPeers -> Parser UseLedgerPeers
forall a. a -> Parser a
forall (m :: * -> *) a. Monad m => a -> m a
return (UseLedgerPeers -> Parser UseLedgerPeers)
-> UseLedgerPeers -> Parser UseLedgerPeers
forall a b. (a -> b) -> a -> b
$
case Scientific -> Scientific -> Ordering
forall a. Ord a => a -> a -> Ordering
compare Scientific
slot Scientific
0 of
Ordering
GT -> AfterSlot -> UseLedgerPeers
UseLedgerPeers (SlotNo -> AfterSlot
After (Word64 -> SlotNo
SlotNo (Scientific -> Word64
forall b. Integral b => Scientific -> b
forall a b. (RealFrac a, Integral b) => a -> b
floor Scientific
slot)))
Ordering
EQ -> AfterSlot -> UseLedgerPeers
UseLedgerPeers AfterSlot
Always
Ordering
LT -> UseLedgerPeers
DontUseLedgerPeers
Value
invalid -> String -> Parser UseLedgerPeers
forall a. String -> Parser a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String -> Parser UseLedgerPeers)
-> String -> Parser UseLedgerPeers
forall a b. (a -> b) -> a -> b
$ String
"Parsing of slot number failed due to type mismatch. Encountered: " String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Value -> String
forall a. Show a => a -> String
show Value
invalid
instance ToJSON UseLedgerPeers where
toJSON :: UseLedgerPeers -> Value
toJSON = \case
UseLedgerPeers
DontUseLedgerPeers -> Scientific -> Value
Number (-Scientific
1)
UseLedgerPeers AfterSlot
Always -> Scientific -> Value
Number Scientific
0
UseLedgerPeers (After (SlotNo Word64
s)) -> Scientific -> Value
Number (Word64 -> Scientific
forall a b. (Integral a, Num b) => a -> b
fromIntegral Word64
s)
instance FromJSON AssociationMode where
parseJSON :: Value -> Parser AssociationMode
parseJSON = String
-> (Text -> Parser AssociationMode)
-> Value
-> Parser AssociationMode
forall a. String -> (Text -> Parser a) -> Value -> Parser a
withText String
"AssociationMode" ((Text -> Parser AssociationMode)
-> Value -> Parser AssociationMode)
-> (Text -> Parser AssociationMode)
-> Value
-> Parser AssociationMode
forall a b. (a -> b) -> a -> b
$ \case
Text
"LocalRootsOnly" -> AssociationMode -> Parser AssociationMode
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure AssociationMode
LocalRootsOnly
Text
"Unrestricted" -> AssociationMode -> Parser AssociationMode
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure AssociationMode
Unrestricted
Text
_ -> String -> Parser AssociationMode
forall a. String -> Parser a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail String
"Invalid JSON for AssociationMode"
instance ToJSON AssociationMode where
toJSON :: AssociationMode -> Value
toJSON AssociationMode
LocalRootsOnly = Text -> Value
String Text
"LocalRootsOnly"
toJSON AssociationMode
Unrestricted = Text -> Value
String Text
"Unrestricted"
instance FromJSON HotValency where
parseJSON :: Value -> Parser HotValency
parseJSON Value
v = Int -> HotValency
HotValency (Int -> HotValency) -> Parser Int -> Parser HotValency
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Value -> Parser Int
forall a. FromJSON a => Value -> Parser a
parseJSON Value
v
instance ToJSON HotValency where
toJSON :: HotValency -> Value
toJSON (HotValency Int
v) = Int -> Value
forall a. ToJSON a => a -> Value
toJSON Int
v
instance FromJSON WarmValency where
parseJSON :: Value -> Parser WarmValency
parseJSON Value
v = Int -> WarmValency
WarmValency (Int -> WarmValency) -> Parser Int -> Parser WarmValency
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Value -> Parser Int
forall a. FromJSON a => Value -> Parser a
parseJSON Value
v
instance ToJSON WarmValency where
toJSON :: WarmValency -> Value
toJSON (WarmValency Int
v) = Int -> Value
forall a. ToJSON a => a -> Value
toJSON Int
v
instance ToJSON AcceptedConnectionsLimit where
toJSON :: AcceptedConnectionsLimit -> Value
toJSON AcceptedConnectionsLimit
{ Word32
acceptedConnectionsHardLimit :: Word32
acceptedConnectionsHardLimit :: AcceptedConnectionsLimit -> Word32
acceptedConnectionsHardLimit
, Word32
acceptedConnectionsSoftLimit :: Word32
acceptedConnectionsSoftLimit :: AcceptedConnectionsLimit -> Word32
acceptedConnectionsSoftLimit
, DiffTime
acceptedConnectionsDelay :: DiffTime
acceptedConnectionsDelay :: AcceptedConnectionsLimit -> DiffTime
acceptedConnectionsDelay
} =
[Pair] -> Value
object [ Key
"AcceptedConnectionsLimit" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.=
[Pair] -> Value
object [ Key
"hardLimit" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.=
Word32 -> Value
forall a. ToJSON a => a -> Value
toJSON Word32
acceptedConnectionsHardLimit
, Key
"softLimit" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.=
Word32 -> Value
forall a. ToJSON a => a -> Value
toJSON Word32
acceptedConnectionsSoftLimit
, Key
"delay" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.=
DiffTime -> Value
forall a. ToJSON a => a -> Value
toJSON DiffTime
acceptedConnectionsDelay
]
]
instance FromJSON AcceptedConnectionsLimit where
parseJSON :: Value -> Parser AcceptedConnectionsLimit
parseJSON = String
-> (Object -> Parser AcceptedConnectionsLimit)
-> Value
-> Parser AcceptedConnectionsLimit
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"AcceptedConnectionsLimit" ((Object -> Parser AcceptedConnectionsLimit)
-> Value -> Parser AcceptedConnectionsLimit)
-> (Object -> Parser AcceptedConnectionsLimit)
-> Value
-> Parser AcceptedConnectionsLimit
forall a b. (a -> b) -> a -> b
$ \Object
v ->
Word32 -> Word32 -> DiffTime -> AcceptedConnectionsLimit
AcceptedConnectionsLimit
(Word32 -> Word32 -> DiffTime -> AcceptedConnectionsLimit)
-> Parser Word32
-> Parser (Word32 -> DiffTime -> AcceptedConnectionsLimit)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
v Object -> Key -> Parser Word32
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"hardLimit"
Parser (Word32 -> DiffTime -> AcceptedConnectionsLimit)
-> Parser Word32 -> Parser (DiffTime -> AcceptedConnectionsLimit)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Word32
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"softLimit"
Parser (DiffTime -> AcceptedConnectionsLimit)
-> Parser DiffTime -> Parser AcceptedConnectionsLimit
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser DiffTime
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"delay"
instance ToJSON MiniProtocolNum where
toJSON :: MiniProtocolNum -> Value
toJSON (MiniProtocolNum Word16
w) = Text -> [Pair] -> Value
kindObject Text
"MiniProtocolNum" [ Key
"num" Key -> Word16 -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Word16
w ]
instance ToJSON addr => ToJSON (OperationResult addr) where
toJSON :: OperationResult addr -> Value
toJSON = \case
UnsupportedState AbstractState
as -> Text -> [Pair] -> Value
kindObject Text
"UnsupportedState" [ Key
"unsupportedState" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= AbstractState -> Value
forall a. ToJSON a => a -> Value
toJSON AbstractState
as ]
OperationSuccess addr
addr -> Text -> [Pair] -> Value
kindObject Text
"OperationSuccess" [ Key
"operationSuccess" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= addr -> Value
forall a. ToJSON a => a -> Value
toJSON addr
addr ]
TerminatedConnection AbstractState
as -> Text -> [Pair] -> Value
kindObject Text
"TerminatedConnection" [ Key
"terminatedConnection" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= AbstractState -> Value
forall a. ToJSON a => a -> Value
toJSON AbstractState
as ]
instance ToJSON RemoteSt where
toJSON :: RemoteSt -> Value
toJSON = Text -> Value
String (Text -> Value) -> (RemoteSt -> Text) -> RemoteSt -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Text
pack (String -> Text) -> (RemoteSt -> String) -> RemoteSt -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. RemoteSt -> String
forall a. Show a => a -> String
show
instance ToJSON state => ToJSON (MaybeUnknown state) where
toJSON :: MaybeUnknown state -> Value
toJSON = \case
Known state
st -> [Pair] -> Value
object [ Key
"state" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= state -> Value
forall a. ToJSON a => a -> Value
toJSON state
st, Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"known" ]
Race state
st -> [Pair] -> Value
object [ Key
"state" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= state -> Value
forall a. ToJSON a => a -> Value
toJSON state
st, Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"race" ]
MaybeUnknown state
Unknown -> [Pair] -> Value
object [ Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"unknown" ]
instance ToJSON addr => ToJSON (LocalAddr addr) where
toJSON :: LocalAddr addr -> Value
toJSON (LocalAddr addr
addr) = addr -> Value
forall a. ToJSON a => a -> Value
toJSON addr
addr
toJSON LocalAddr addr
UnknownLocalAddr = Value
Null
instance ToJSON ConnStateId where
toJSON :: ConnStateId -> Value
toJSON (ConnStateId Int
connStateId) = Int -> Value
forall a. ToJSON a => a -> Value
toJSON Int
connStateId
instance ToJSON ProtocolLimitFailure where
toJSON :: ProtocolLimitFailure -> Value
toJSON = \case
ExceededSizeLimit StateToken st
tok -> Text -> [Pair] -> Value
kindObject Text
"ProtocolLimitFailure" [ Key
"agency" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= StateToken st -> String
forall a. Show a => a -> String
show StateToken st
tok ]
ExceededTimeLimit StateToken st
tok -> Text -> [Pair] -> Value
kindObject Text
"ProtocolLimitFailure" [ Key
"agency" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= StateToken st -> String
forall a. Show a => a -> String
show StateToken st
tok ]
instance ToJSON vNumber => ToJSON (RefuseReason vNumber) where
toJSON :: RefuseReason vNumber -> Value
toJSON = \case
VersionMismatch [vNumber]
vNumber [Int]
tags -> Text -> [Pair] -> Value
kindObject Text
"VersionMismatch"
[ Key
"versionNumbers" Key -> [vNumber] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [vNumber]
vNumber
, Key
"unknownVersionNumbers" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [Int] -> Value
forall a. ToJSON a => [a] -> Value
toJSONList [Int]
tags
]
HandshakeDecodeError vNumber
vNumber Text
t -> Text -> [Pair] -> Value
kindObject Text
"HandshakeDecodeError"
[ Key
"versionNumber" Key -> vNumber -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= vNumber
vNumber
, Key
"decodeError" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
t
]
Refused vNumber
vNumber Text
t -> Text -> [Pair] -> Value
kindObject Text
"Refused"
[ Key
"versionNumber" Key -> vNumber -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= vNumber
vNumber
, Key
"text" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
t
]
instance ToJSON vNumber => ToJSON (HandshakeProtocolError vNumber) where
toJSON :: HandshakeProtocolError vNumber -> Value
toJSON = \case
HandshakeError RefuseReason vNumber
rvNumber -> Text -> [Pair] -> Value
kindObject Text
"HandshakeError" [ Key
"reason" Key -> RefuseReason vNumber -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= RefuseReason vNumber
rvNumber ]
NotRecognisedVersion vNumber
vNumber -> Text -> [Pair] -> Value
kindObject Text
"NotRecognisedVersion" [ Key
"versionNumber" Key -> vNumber -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= vNumber
vNumber ]
InvalidServerSelection vNumber
vNumber Text
t -> Text -> [Pair] -> Value
kindObject Text
"InvalidServerSelection"
[ Key
"versionNumber" Key -> vNumber -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= vNumber
vNumber
, Key
"reason" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$ Text -> String
forall a. Show a => a -> String
show Text
t)
]
HandshakeProtocolError vNumber
QueryNotSupported -> Text -> [Pair] -> Value
kindObject Text
"QueryNotSupported" []
instance Show vNumber => ToJSON (HandshakeException vNumber) where
toJSON :: HandshakeException vNumber -> Value
toJSON = \case
HandshakeProtocolLimit ProtocolLimitFailure
plf -> Text -> [Pair] -> Value
kindObject Text
"HandshakeProtocolLimit" [ Key
"handshakeProtocolLimit" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ProtocolLimitFailure -> Value
forall a. ToJSON a => a -> Value
toJSON ProtocolLimitFailure
plf ]
HandshakeProtocolError HandshakeProtocolError vNumber
err -> Text -> [Pair] -> Value
kindObject Text
"HandshakeProtocolError" [ Key
"reason" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= HandshakeProtocolError vNumber -> String
forall a. Show a => a -> String
show HandshakeProtocolError vNumber
err ]
instance ToJSON AbstractState where
toJSON :: AbstractState -> Value
toJSON = \case
AbstractState
UnknownConnectionSt -> Text -> [Pair] -> Value
kindObject Text
"UnknownConnectionSt" []
AbstractState
ReservedOutboundSt -> Text -> [Pair] -> Value
kindObject Text
"ReservedOutboundSt" []
UnnegotiatedSt Provenance
provenance -> Text -> [Pair] -> Value
kindObject Text
"UnnegotiatedSt"
[ Key
"provenance" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text) -> (Provenance -> String) -> Provenance -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Provenance -> String
forall a. Show a => a -> String
show (Provenance -> Text) -> Provenance -> Text
forall a b. (a -> b) -> a -> b
$ Provenance
provenance) ]
InboundIdleSt DataFlow
dataFlow -> Text -> [Pair] -> Value
kindObject Text
"InboundIdleSt"
[ Key
"dataFlow" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text) -> (DataFlow -> String) -> DataFlow -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DataFlow -> String
forall a. Show a => a -> String
show (DataFlow -> Text) -> DataFlow -> Text
forall a b. (a -> b) -> a -> b
$ DataFlow
dataFlow) ]
InboundSt DataFlow
dataFlow -> Text -> [Pair] -> Value
kindObject Text
"InboundSt"
[ Key
"dataFlow" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text) -> (DataFlow -> String) -> DataFlow -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DataFlow -> String
forall a. Show a => a -> String
show (DataFlow -> Text) -> DataFlow -> Text
forall a b. (a -> b) -> a -> b
$ DataFlow
dataFlow) ]
AbstractState
OutboundUniSt -> Text -> [Pair] -> Value
kindObject Text
"OutboundUniSt" []
OutboundDupSt TimeoutExpired
timeoutExpired -> Text -> [Pair] -> Value
kindObject Text
"OutboundDupSt"
[ Key
"timeoutState" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text)
-> (TimeoutExpired -> String) -> TimeoutExpired -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TimeoutExpired -> String
forall a. Show a => a -> String
show (TimeoutExpired -> Text) -> TimeoutExpired -> Text
forall a b. (a -> b) -> a -> b
$ TimeoutExpired
timeoutExpired) ]
OutboundIdleSt DataFlow
dataFlow -> Text -> [Pair] -> Value
kindObject Text
"OutboundIdleSt"
[ Key
"dataFlow" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text) -> (DataFlow -> String) -> DataFlow -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DataFlow -> String
forall a. Show a => a -> String
show (DataFlow -> Text) -> DataFlow -> Text
forall a b. (a -> b) -> a -> b
$ DataFlow
dataFlow) ]
AbstractState
DuplexSt -> Text -> [Pair] -> Value
kindObject Text
"DuplexSt" []
AbstractState
WaitRemoteIdleSt -> Text -> [Pair] -> Value
kindObject Text
"WaitRemoteIdleSt" []
AbstractState
TerminatingSt -> Text -> [Pair] -> Value
kindObject Text
"TerminatingSt" []
AbstractState
TerminatedSt -> Text -> [Pair] -> Value
kindObject Text
"TerminatedSt" []
instance ToJSON KnownPeerInfo where
toJSON :: KnownPeerInfo -> Value
toJSON (KnownPeerInfo
Int
nKnownPeerFailCount
Bool
nKnownPeerTepid
StrictMaybe PeerSharing
nKnownPeerSharing
StrictMaybe PeerAdvertise
nKnownPeerAdvertise
Bool
nKnownSuccessfulConnection
) = Text -> [Pair] -> Value
kindObject Text
"KnownPeerInfo"
[ Key
"failCount" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
nKnownPeerFailCount
, Key
"tepid" Key -> Bool -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Bool
nKnownPeerTepid
, Key
"peerSharing" Key -> StrictMaybe PeerSharing -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= StrictMaybe PeerSharing
nKnownPeerSharing
, Key
"peerAdvertise" Key -> StrictMaybe PeerAdvertise -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= StrictMaybe PeerAdvertise
nKnownPeerAdvertise
, Key
"successfulConnection" Key -> Bool -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Bool
nKnownSuccessfulConnection
]
instance ToJSON PeerStatus where
toJSON :: PeerStatus -> Value
toJSON = Text -> Value
String (Text -> Value) -> (PeerStatus -> Text) -> PeerStatus -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Text
pack (String -> Text) -> (PeerStatus -> String) -> PeerStatus -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PeerStatus -> String
forall a. Show a => a -> String
show
instance (ToJSON extraFlags, ToJSONKey peerAddr, ToJSON peerAddr, Ord peerAddr)
=> ToJSON (LocalRootPeers extraFlags peerAddr) where
toJSON :: LocalRootPeers extraFlags peerAddr -> Value
toJSON LocalRootPeers extraFlags peerAddr
lrp = Text -> [Pair] -> Value
kindObject Text
"LocalRootPeers"
[ Key
"groups" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [(HotValency, WarmValency,
Map peerAddr (LocalRootConfig extraFlags))]
-> Value
forall a. ToJSON a => [a] -> Value
toJSONList (LocalRootPeers extraFlags peerAddr
-> [(HotValency, WarmValency,
Map peerAddr (LocalRootConfig extraFlags))]
forall peeraddr extraFlags.
Ord peeraddr =>
LocalRootPeers extraFlags peeraddr
-> [(HotValency, WarmValency,
Map peeraddr (LocalRootConfig extraFlags))]
LocalRootPeers.toGroups LocalRootPeers extraFlags peerAddr
lrp) ]
instance ToJSON PeerSelectionTargets where
toJSON :: PeerSelectionTargets -> Value
toJSON (PeerSelectionTargets
Int
nRootPeers
Int
nKnownPeers
Int
nEstablishedPeers
Int
nActivePeers
Int
nKnownBigLedgerPeers
Int
nEstablishedBigLedgerPeers
Int
nActiveBigLedgerPeers
) = Text -> [Pair] -> Value
kindObject Text
"PeerSelectionTargets"
[ Key
"targetRootPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
nRootPeers
, Key
"targetKnownPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
nKnownPeers
, Key
"targetEstablishedPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
nEstablishedPeers
, Key
"targetActivePeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
nActivePeers
, Key
"targetKnownBigLedgerPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
nKnownBigLedgerPeers
, Key
"targetEstablishedBigLedgerPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
nEstablishedBigLedgerPeers
, Key
"targetActiveBigLedgerPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
nActiveBigLedgerPeers
]
instance ToJSON RepromoteDelay where
toJSON :: RepromoteDelay -> Value
toJSON = DiffTime -> Value
forall a. ToJSON a => a -> Value
toJSON (DiffTime -> Value)
-> (RepromoteDelay -> DiffTime) -> RepromoteDelay -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. RepromoteDelay -> DiffTime
repromoteDelay
instance ToJSON addr => ToJSON (PeerSharingResult addr) where
toJSON :: PeerSharingResult addr -> Value
toJSON = \case
PeerSharingResult [addr]
addrs -> [addr] -> Value
forall a. ToJSON a => [a] -> Value
toJSONList [addr]
addrs
PeerSharingResult addr
PeerSharingNotRegisteredYet -> Text -> Value
String Text
"PeerSharingNotRegisteredYet"
instance ToJSON extraFlags => ToJSON (LocalRootConfig extraFlags) where
toJSON :: LocalRootConfig extraFlags -> Value
toJSON LocalRootConfig { PeerAdvertise
peerAdvertise :: forall extraFlags. LocalRootConfig extraFlags -> PeerAdvertise
peerAdvertise :: PeerAdvertise
peerAdvertise, extraFlags
extraFlags :: extraFlags
extraFlags :: forall extraFlags. LocalRootConfig extraFlags -> extraFlags
LRP.extraFlags, DiffusionMode
diffusionMode :: DiffusionMode
diffusionMode :: forall extraFlags. LocalRootConfig extraFlags -> DiffusionMode
LRP.diffusionMode } =
[Pair] -> Value
object
[ Key
"peerAdvertise" Key -> PeerAdvertise -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= PeerAdvertise
peerAdvertise
, Key
"diffusionMode" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DiffusionMode -> String
forall a. Show a => a -> String
show DiffusionMode
diffusionMode
, Key
"extraFlags" Key -> extraFlags -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= extraFlags
extraFlags
]
instance ToJSON RemoteAddress where
toJSON :: RemoteAddress -> Value
toJSON = \case
SockAddrInet PortNumber
port Word32
addr ->
let ip :: IPv4
ip = Word32 -> IPv4
fromHostAddress Word32
addr in
[Pair] -> Value
object [ Key
"address" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= IPv4 -> String
forall a. Show a => a -> String
show IPv4
ip
, Key
"port" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= PortNumber -> String
forall a. Show a => a -> String
show PortNumber
port
]
SockAddrInet6 PortNumber
port Word32
_ HostAddress6
addr Word32
_ ->
let ip :: IPv6
ip = HostAddress6 -> IPv6
fromHostAddress6 HostAddress6
addr in
[Pair] -> Value
object [ Key
"address" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= IPv6 -> String
forall a. Show a => a -> String
show IPv6
ip
, Key
"port" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= PortNumber -> String
forall a. Show a => a -> String
show PortNumber
port
]
SockAddrUnix String
path ->
[Pair] -> Value
object [ Key
"socketPath" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= String -> String
forall a. Show a => a -> String
show String
path ]
instance (ToJSON peer, ToJSON point) => ToJSON (Mux.TraceLabelPeer peer (FetchDecision [point])) where
toJSON :: TraceLabelPeer peer (FetchDecision [point]) -> Value
toJSON (Mux.TraceLabelPeer peer
peer FetchDecision [point]
decision) = [Pair] -> Value
object
[ Key
"peer" Key -> peer -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= peer
peer
, Key
"decision" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.=
case FetchDecision [point]
decision of
Left FetchDecline
decline -> [Pair] -> Value
object [ Key
"declined" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text)
-> (FetchDecline -> String) -> FetchDecline -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. FetchDecline -> String
forall a. Show a => a -> String
show (FetchDecline -> Text) -> FetchDecline -> Text
forall a b. (a -> b) -> a -> b
$ FetchDecline
decline) ]
Right [point]
points -> [point] -> Value
forall a. ToJSON a => a -> Value
toJSON [point]
points
]
instance ToJSON PeerGSV where
toJSON :: PeerGSV -> Value
toJSON PeerGSV { outboundGSV :: PeerGSV -> GSV
outboundGSV = GSV DiffTime
outboundG SizeInBytes -> DiffTime
_ Distribution DiffTime
_, inboundGSV :: PeerGSV -> GSV
inboundGSV = GSV DiffTime
inboundG SizeInBytes -> DiffTime
_ Distribution DiffTime
_ } =
[Pair] -> Value
object [Key
"G" Key -> Double -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (DiffTime -> Double
forall a b. (Real a, Fractional b) => a -> b
realToFrac (DiffTime
outboundG DiffTime -> DiffTime -> DiffTime
forall a. Num a => a -> a -> a
+ DiffTime
inboundG) :: Double)]
instance ToJSON LocalAddress where
toJSON :: LocalAddress -> Value
toJSON (LocalAddress String
path) = Text -> Value
String (String -> Text
pack String
path)
instance ToJSON peerAddr => ToJSON (ConnectionId peerAddr) where
toJSON :: ConnectionId peerAddr -> Value
toJSON ConnectionId { peerAddr
localAddress :: peerAddr
localAddress :: forall addr. ConnectionId addr -> addr
localAddress, peerAddr
remoteAddress :: peerAddr
remoteAddress :: forall addr. ConnectionId addr -> addr
remoteAddress } = [Pair] -> Value
object
[ Key
"localAddress" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= peerAddr -> Value
forall a. ToJSON a => a -> Value
toJSON peerAddr
localAddress
, Key
"remoteAddress" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= peerAddr -> Value
forall a. ToJSON a => a -> Value
toJSON peerAddr
remoteAddress
]
instance ToJSON ConnectionManagerCounters where
toJSON :: ConnectionManagerCounters -> Value
toJSON ConnectionManagerCounters
{ Int
fullDuplexConns :: Int
fullDuplexConns :: ConnectionManagerCounters -> Int
fullDuplexConns
, Int
duplexConns :: Int
duplexConns :: ConnectionManagerCounters -> Int
duplexConns
, Int
unidirectionalConns :: Int
unidirectionalConns :: ConnectionManagerCounters -> Int
unidirectionalConns
, Int
inboundConns :: Int
inboundConns :: ConnectionManagerCounters -> Int
inboundConns
, Int
outboundConns :: Int
outboundConns :: ConnectionManagerCounters -> Int
outboundConns
} = [Pair] -> Value
object
[ Key
"fullDuplex" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int -> Value
forall a. ToJSON a => a -> Value
toJSON Int
fullDuplexConns
, Key
"duplex" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int -> Value
forall a. ToJSON a => a -> Value
toJSON Int
duplexConns
, Key
"unidirectional" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int -> Value
forall a. ToJSON a => a -> Value
toJSON Int
unidirectionalConns
, Key
"inbound" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
inboundConns
, Key
"outbound" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
outboundConns
]
instance ToJSONKey RelayAccessPoint where
instance ToJSONKey RemoteAddress where
instance ToJSONKey LocalAddress where
instance (ToJSON addr, ToJSONKey addr) => ToJSONKey (ConnectionId addr) where
instance ToJSON PortNumber where
toJSON :: PortNumber -> Value
toJSON = Int -> Value
forall a. ToJSON a => a -> Value
toJSON (Int -> Value) -> (PortNumber -> Int) -> PortNumber -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral @_ @Int
instance (ToJSON peer, ToJSON a) => ToJSON (Mux.WithBearer peer a) where
toJSON :: WithBearer peer a -> Value
toJSON (Mux.WithBearer peer
peer a
ev) =
[Pair] -> Value
object [ Key
"bearer" Key -> peer -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= peer
peer
, Key
"event" Key -> a -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= a
ev
]
instance ToJSON Mux.MiniProtocolDir where
toJSON :: MiniProtocolDir -> Value
toJSON MiniProtocolDir
miniProtocolDir = Text -> Value
String (String -> Text
pack (String -> Text)
-> (MiniProtocolDir -> String) -> MiniProtocolDir -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MiniProtocolDir -> String
forall a. Show a => a -> String
show (MiniProtocolDir -> Text) -> MiniProtocolDir -> Text
forall a b. (a -> b) -> a -> b
$ MiniProtocolDir
miniProtocolDir)
instance ToJSON Mux.Trace where
toJSON :: Trace -> Value
toJSON = \case
Mux.TraceState State
state ->
[Pair] -> Value
object [ Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"State"
, Key
"state" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text) -> (State -> String) -> State -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. State -> String
forall a. Show a => a -> String
show (State -> Text) -> State -> Text
forall a b. (a -> b) -> a -> b
$ State
state)
]
Mux.TraceCleanExit MiniProtocolNum
miniProtocolNum MiniProtocolDir
miniProtocolDir ->
[Pair] -> Value
object [ Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"CleanExit"
, Key
"miniProtocolNum" Key -> MiniProtocolNum -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= MiniProtocolNum
miniProtocolNum
, Key
"miniProtocolDir" Key -> MiniProtocolDir -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= MiniProtocolDir
miniProtocolDir
]
Mux.TraceExceptionExit MiniProtocolNum
miniProtocolNum MiniProtocolDir
miniProtocolDir SomeException
err ->
[Pair] -> Value
object [ Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ExceptionExit"
, Key
"miniProtocolNum" Key -> MiniProtocolNum -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= MiniProtocolNum
miniProtocolNum
, Key
"miniProtocolDir" Key -> MiniProtocolDir -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= MiniProtocolDir
miniProtocolDir
, Key
"error" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text)
-> (SomeException -> String) -> SomeException -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SomeException -> String
forall e. Exception e => e -> String
displayException (SomeException -> Text) -> SomeException -> Text
forall a b. (a -> b) -> a -> b
$ SomeException
err)
]
Mux.TraceStartEagerly MiniProtocolNum
miniProtocolNum MiniProtocolDir
miniProtocolDir ->
[Pair] -> Value
object [ Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"StartEagerly"
, Key
"miniProtocolNum" Key -> MiniProtocolNum -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= MiniProtocolNum
miniProtocolNum
, Key
"miniProtocolDir" Key -> MiniProtocolDir -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= MiniProtocolDir
miniProtocolDir
]
Mux.TraceStartOnDemand MiniProtocolNum
miniProtocolNum MiniProtocolDir
miniProtocolDir ->
[Pair] -> Value
object [ Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"StartOnDemand"
, Key
"miniProtocolNum" Key -> MiniProtocolNum -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= MiniProtocolNum
miniProtocolNum
, Key
"miniProtocolDir" Key -> MiniProtocolDir -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= MiniProtocolDir
miniProtocolDir
]
Mux.TraceStartOnDemandAny MiniProtocolNum
miniProtocolNum MiniProtocolDir
miniProtocolDir ->
[Pair] -> Value
object [ Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"StartOnDemandAny"
, Key
"miniProtocolNum" Key -> MiniProtocolNum -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= MiniProtocolNum
miniProtocolNum
, Key
"miniProtocolDir" Key -> MiniProtocolDir -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= MiniProtocolDir
miniProtocolDir
]
Mux.TraceStartedOnDemand MiniProtocolNum
miniProtocolNum MiniProtocolDir
miniProtocolDir ->
[Pair] -> Value
object [ Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"StartedOnDemand"
, Key
"miniProtocolNum" Key -> MiniProtocolNum -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= MiniProtocolNum
miniProtocolNum
, Key
"miniProtocolDir" Key -> MiniProtocolDir -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= MiniProtocolDir
miniProtocolDir
]
Mux.TraceTerminating MiniProtocolNum
miniProtocolNum MiniProtocolDir
miniProtocolDir ->
[Pair] -> Value
object [ Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"Terminating"
, Key
"miniProtocolNum" Key -> MiniProtocolNum -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= MiniProtocolNum
miniProtocolNum
, Key
"miniProtocolDir" Key -> MiniProtocolDir -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= MiniProtocolDir
miniProtocolDir
]
Trace
Mux.TraceStopping ->
[Pair] -> Value
object [ Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"Stopping"
]
Trace
Mux.TraceStopped ->
[Pair] -> Value
object [ Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"Stopped"
]
instance ToJSON Mux.ChannelTrace where
toJSON :: ChannelTrace -> Value
toJSON = \case
Mux.TraceChannelRecvStart MiniProtocolNum
miniProtocolNum ->
[Pair] -> Value
object [ Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"RecvStart"
, Key
"miniProtocolNum" Key -> MiniProtocolNum -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= MiniProtocolNum
miniProtocolNum
]
Mux.TraceChannelRecvEnd MiniProtocolNum
miniProtocolNum Int
len ->
[Pair] -> Value
object [ Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"RecvEnd"
, Key
"miniProtocolNum" Key -> MiniProtocolNum -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= MiniProtocolNum
miniProtocolNum
, Key
"length" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
len
]
Mux.TraceChannelSendStart MiniProtocolNum
miniProtocolNum Int
len ->
[Pair] -> Value
object [ Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"SendStart"
, Key
"miniProtocolNum" Key -> MiniProtocolNum -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= MiniProtocolNum
miniProtocolNum
, Key
"length" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
len
]
Mux.TraceChannelSendEnd MiniProtocolNum
miniProtocolNum ->
[Pair] -> Value
object [ Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"SendEnd"
, Key
"miniProtocolNum" Key -> MiniProtocolNum -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= MiniProtocolNum
miniProtocolNum
]
instance ToJSON Mux.BearerTrace where
toJSON :: BearerTrace -> Value
toJSON BearerTrace
ev = Text -> Value
String (String -> Text
pack (String -> Text) -> (BearerTrace -> String) -> BearerTrace -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. BearerTrace -> String
forall a. Show a => a -> String
show (BearerTrace -> Text) -> BearerTrace -> Text
forall a b. (a -> b) -> a -> b
$ BearerTrace
ev)
instance ToJSON (AnyMessage ps) => ToJSON (TraceSendRecv ps) where
toJSON :: TraceSendRecv ps -> Value
toJSON = \case
TraceSendMsg AnyMessage ps
msg ->
[Pair] -> Value
object [ Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"SendMsg"
, Key
"message" Key -> AnyMessage ps -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= AnyMessage ps
msg
]
TraceRecvMsg AnyMessage ps
msg ->
[Pair] -> Value
object [ Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"RecvMsg"
, Key
"message" Key -> AnyMessage ps -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= AnyMessage ps
msg
]
instance (ToJSON version, ToJSONKey version, ToJSON params) => ToJSON (AnyMessage (Handshake version params)) where
toJSON :: AnyMessage (Handshake version params) -> Value
toJSON = \case
AnyMessage (MsgProposeVersions Map vNumber1 vParams1
versionDict) ->
[Pair] -> Value
object [ Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgProposeVersions"
, Key
"versions" Key -> Map vNumber1 vParams1 -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Map vNumber1 vParams1
versionDict
]
AnyMessage (MsgReplyVersions Map vNumber1 vParams1
versionDict) ->
[Pair] -> Value
object [ Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgReplyVersions"
, Key
"versions" Key -> Map vNumber1 vParams1 -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Map vNumber1 vParams1
versionDict
]
AnyMessage (MsgQueryReply Map vNumber1 vParams1
versionDict) ->
[Pair] -> Value
object [ Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgQueryVersions"
, Key
"versions" Key -> Map vNumber1 vParams1 -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Map vNumber1 vParams1
versionDict
]
AnyMessage (MsgAcceptVersion vNumber1
version vParams1
params) ->
[Pair] -> Value
object [ Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgAcceptVersion"
, Key
"version" Key -> vNumber1 -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= vNumber1
version
, Key
"params" Key -> vParams1 -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= vParams1
params
]
AnyMessage (MsgRefuse RefuseReason vNumber1
reason) ->
[Pair] -> Value
object [ Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgRefuse"
, Key
"reason" Key -> RefuseReason vNumber1 -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= RefuseReason vNumber1
reason
]
instance (ToJSON localAddress, ToJSON remoteAddress) => ToJSON (DiffusionTracer localAddress remoteAddress) where
toJSON :: DiffusionTracer localAddress remoteAddress -> Value
toJSON (RunServer NonEmpty localAddress
sockAddr) = [Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"RunServer"
, Key
"addresses" Key -> NonEmpty localAddress -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= NonEmpty localAddress
sockAddr
]
toJSON (RunLocalServer remoteAddress
localAddress) = [Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"RunLocalServer"
, Key
"addresses" Key -> remoteAddress -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= remoteAddress
localAddress
]
toJSON (UsingSystemdSocket remoteAddress
localAddress) = [Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"UsingSystemdSocket"
, Key
"address" Key -> remoteAddress -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= remoteAddress
localAddress
]
toJSON (CreateSystemdSocketForSnocketPath remoteAddress
localAddress) = [Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"CreateSystemdSocketForSnocketaddress"
, Key
"address" Key -> remoteAddress -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= remoteAddress
localAddress
]
toJSON (CreatedLocalSocket remoteAddress
localAddress) = [Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"CreatedLocalSocket"
, Key
"address" Key -> remoteAddress -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= remoteAddress
localAddress
]
toJSON (ConfiguringLocalSocket remoteAddress
localAddress FileDescriptor
socket) = [Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ConfiguringLocalSocket"
, Key
"address" Key -> remoteAddress -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= remoteAddress
localAddress
, Key
"socket" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (FileDescriptor -> String
forall a. Show a => a -> String
show FileDescriptor
socket))
]
toJSON (ListeningLocalSocket remoteAddress
localAddress FileDescriptor
socket) = [Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ListeningLocalSocket"
, Key
"address" Key -> remoteAddress -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= remoteAddress
localAddress
, Key
"socket" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (FileDescriptor -> String
forall a. Show a => a -> String
show FileDescriptor
socket))
]
toJSON (LocalSocketUp remoteAddress
localAddress FileDescriptor
fd) = [Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"LocalSocketUp"
, Key
"address" Key -> remoteAddress -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= remoteAddress
localAddress
, Key
"socket" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (FileDescriptor -> String
forall a. Show a => a -> String
show FileDescriptor
fd))
]
toJSON (CreatingServerSocket localAddress
sockAddr) = [Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"CreatingServerSocket"
, Key
"address" Key -> localAddress -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= localAddress
sockAddr
]
toJSON (ListeningServerSocket localAddress
sockAddr) = [Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ListeningServerSocket"
, Key
"address" Key -> localAddress -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= localAddress
sockAddr
]
toJSON (ServerSocketUp localAddress
sockAddr) = [Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ServerSocketUp"
, Key
"address" Key -> localAddress -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= localAddress
sockAddr
]
toJSON (ConfiguringServerSocket localAddress
sockAddr) = [Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ConfiguringServerSocket"
, Key
"address" Key -> localAddress -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= localAddress
sockAddr
]
toJSON (UnsupportedLocalSystemdSocket localAddress
addr) = [Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"UnsupportedLocalSystemdSocket"
, Key
"address" Key -> localAddress -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= localAddress
addr
]
toJSON DiffusionTracer localAddress remoteAddress
UnsupportedReadySocketCase = [Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"UnsupportedReadySocketCase"
]
toJSON (DiffusionErrored SomeException
exception) = [Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"DiffusionErrored"
, Key
"error" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (SomeException -> String
forall a. Show a => a -> String
show SomeException
exception))
]
toJSON (SystemdSocketConfiguration SystemdSocketTracer
config) = [Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"SystemdSocketConfiguration"
, Key
"message" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (SystemdSocketTracer -> String
forall a. Show a => a -> String
show SystemdSocketTracer
config))
]
instance (ToJSON extraFlags, ToJSON peerAddr, ToJSONKey peerAddr) => ToJSON (TraceLocalRootPeers extraFlags peerAddr) where
toJSON :: TraceLocalRootPeers extraFlags peerAddr -> Value
toJSON (TraceLocalRootDomains Config extraFlags RelayAccessPoint
groups) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"LocalRootDomains"
, Key
"localRootDomains" Key -> Config extraFlags RelayAccessPoint -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Config extraFlags RelayAccessPoint
groups
]
toJSON (TraceLocalRootWaiting RelayAccessPoint
d DiffTime
dt) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"LocalRootWaiting"
, Key
"domainAddress" Key -> RelayAccessPoint -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= RelayAccessPoint
d
, Key
"diffTime" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DiffTime -> String
forall a. Show a => a -> String
show DiffTime
dt
]
toJSON (TraceLocalRootGroups Config extraFlags peerAddr
groups) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"LocalRootGroups"
, Key
"localRootGroups" Key -> Config extraFlags peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Config extraFlags peerAddr
groups
]
toJSON (TraceLocalRootFailure RelayAccessPoint
d DNSorIOError
dexception) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"LocalRootFailure"
, Key
"domainAddress" Key -> RelayAccessPoint -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= RelayAccessPoint
d
, Key
"reason" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DNSorIOError -> String
forall a. Show a => a -> String
show DNSorIOError
dexception
]
toJSON (TraceLocalRootError Domain
d SomeException
dexception) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"LocalRootError"
, Key
"domainAddress" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (OnDecodeError -> Domain -> Text
Text.decodeUtf8With OnDecodeError
forall a b. OnError a b
Text.ignore Domain
d)
, Key
"reason" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SomeException -> String
forall a. Show a => a -> String
show SomeException
dexception
]
toJSON (TraceLocalRootReconfigured Config extraFlags RelayAccessPoint
_ Config extraFlags RelayAccessPoint
_) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"LocalRootReconfigured"
]
toJSON (TraceLocalRootDNSMap Map RelayAccessPoint [peerAddr]
dnsMap) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"TraceLocalRootDNSMap"
, Key
"dnsMap" Key -> Map RelayAccessPoint [peerAddr] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Map RelayAccessPoint [peerAddr]
dnsMap
]
instance ToJSON TracePublicRootPeers where
toJSON :: TracePublicRootPeers -> Value
toJSON (TracePublicRootRelayAccessPoint Map RelayAccessPoint PeerAdvertise
relays) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PublicRootRelayAddresses"
, Key
"relayAddresses" Key -> Map RelayAccessPoint PeerAdvertise -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Map RelayAccessPoint PeerAdvertise
relays
]
toJSON (TracePublicRootDomains [RelayAccessPoint]
domains) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PublicRootDomains"
, Key
"domainAddresses" Key -> [RelayAccessPoint] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [RelayAccessPoint]
domains
]
instance ToJSON TraceLedgerPeers where
toJSON :: TraceLedgerPeers -> Value
toJSON (PickedBigLedgerPeer RelayAccessPoint
addr AccPoolStake
_ackStake PoolStake
stake) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PickedBigLedgerPeer"
, Key
"address" Key -> RelayAccessPoint -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= RelayAccessPoint
addr
, Key
"relativeStake" Key -> Double -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Rational -> Double
forall a b. (Real a, Fractional b) => a -> b
realToFrac (PoolStake -> Rational
unPoolStake PoolStake
stake) :: Double)
]
toJSON (PickedBigLedgerPeers (NumberOfPeers Word16
n) [RelayAccessPoint]
addrs) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PickedBigLedgerPeers"
, Key
"desiredCount" Key -> Word16 -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Word16
n
, Key
"count" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [RelayAccessPoint] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [RelayAccessPoint]
addrs
, Key
"addresses" Key -> [RelayAccessPoint] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [RelayAccessPoint]
addrs
]
toJSON (PickedLedgerPeer RelayAccessPoint
addr AccPoolStake
_ackStake PoolStake
stake) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PickedLedgerPeer"
, Key
"address" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= RelayAccessPoint -> String
forall a. Show a => a -> String
show RelayAccessPoint
addr
, Key
"relativeStake" Key -> Double -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Rational -> Double
forall a b. (Real a, Fractional b) => a -> b
realToFrac (PoolStake -> Rational
unPoolStake PoolStake
stake) :: Double)
]
toJSON (PickedLedgerPeers (NumberOfPeers Word16
n) [RelayAccessPoint]
addrs) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PickedLedgerPeers"
, Key
"desiredCount" Key -> Word16 -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Word16
n
, Key
"count" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [RelayAccessPoint] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [RelayAccessPoint]
addrs
, Key
"addresses" Key -> [RelayAccessPoint] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [RelayAccessPoint]
addrs
]
toJSON (FetchingNewLedgerState Int
cnt Int
bigCnt) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"FetchingNewLedgerState"
, Key
"numberOfLedgerPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
cnt
, Key
"numberOfBigLedgerPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
bigCnt
]
toJSON TraceLedgerPeers
DisabledLedgerPeers =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"DisabledLedgerPeers"
]
toJSON (TraceUseLedgerPeers UseLedgerPeers
ulp) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"UseLedgerPeers"
, Key
"useLedgerPeers" Key -> UseLedgerPeers -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= UseLedgerPeers
ulp
]
toJSON TraceLedgerPeers
WaitingOnRequest =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"WaitingOnRequest"
]
toJSON (RequestForPeers (NumberOfPeers Word16
np)) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"RequestForPeers"
, Key
"numberOfPeers" Key -> Word16 -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Word16
np
]
toJSON (ReusingLedgerState Int
cnt DiffTime
age) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ReusingLedgerState"
, Key
"numberOfPools" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
cnt
, Key
"ledgerStateAge" Key -> DiffTime -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DiffTime
age
]
toJSON TraceLedgerPeers
FallingBackToPublicRootPeers =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"FallingBackToBootstrapPeers"
]
toJSON (NotEnoughLedgerPeers (NumberOfPeers Word16
target) Int
numOfLedgerPeers) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"NotEnoughLedgerPeers"
, Key
"target" Key -> Word16 -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Word16
target
, Key
"numOfLedgerPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numOfLedgerPeers
]
toJSON (NotEnoughBigLedgerPeers (NumberOfPeers Word16
target) Int
numOfBigLedgerPeers) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"NotEnoughBigLedgerPeers"
, Key
"target" Key -> Word16 -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Word16
target
, Key
"numOfBigLedgerPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numOfBigLedgerPeers
]
toJSON (TraceLedgerPeersDomains [RelayAccessPoint]
daps) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"TraceLedgerPeersDomains"
, Key
"domainAccessPoints" Key -> [RelayAccessPoint] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [RelayAccessPoint]
daps
]
toJSON TraceLedgerPeers
UsingBigLedgerPeerSnapshot =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"UsingBigLedgerPeerSnapshot"
]
instance ToJSON Time where
toJSON :: Time -> Value
toJSON = Text -> Value
String (Text -> Value) -> (Time -> Text) -> Time -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Text
pack (String -> Text) -> (Time -> String) -> Time -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Time -> String
forall a. Show a => a -> String
show
instance ( ToJSON extraDebugState
, ToJSON extraFlags
, ToJSON extraPeers
, ToJSON peerAddr
, ToJSONKey peerAddr
, Ord peerAddr
, ToJSON (PublicRootPeers.PublicRootPeers extraPeers peerAddr)
)
=> ToJSON (TracePeerSelection extraDebugState extraFlags extraPeers peerAddr) where
toJSON :: TracePeerSelection extraDebugState extraFlags extraPeers peerAddr
-> Value
toJSON (TraceLocalRootPeersChanged LocalRootPeers extraFlags peerAddr
lrp LocalRootPeers extraFlags peerAddr
lrp') =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"LocalRootPeersChanged"
, Key
"previous" Key -> LocalRootPeers extraFlags peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= LocalRootPeers extraFlags peerAddr
lrp
, Key
"current" Key -> LocalRootPeers extraFlags peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= LocalRootPeers extraFlags peerAddr
lrp'
]
toJSON (TraceTargetsChanged PeerSelectionTargets
pst PeerSelectionTargets
pst') =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"TargetsChanged"
, Key
"previous" Key -> PeerSelectionTargets -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= PeerSelectionTargets
pst
, Key
"current" Key -> PeerSelectionTargets -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= PeerSelectionTargets
pst'
]
toJSON (TracePublicRootsRequest Int
tRootPeers Int
nRootPeers) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PublicRootsRequest"
, Key
"targetNumberOfRootPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
tRootPeers
, Key
"numberOfRootPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
nRootPeers
]
toJSON (TracePublicRootsResults PublicRootPeers extraPeers peerAddr
res Int
group DiffTime
dt) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PublicRootsResults"
, Key
"result" Key -> PublicRootPeers extraPeers peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= PublicRootPeers extraPeers peerAddr
res
, Key
"group" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
group
, Key
"diffTime" Key -> DiffTime -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DiffTime
dt
]
toJSON (TracePublicRootsFailure SomeException
err Int
group DiffTime
dt) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PublicRootsFailure"
, Key
"reason" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SomeException -> String
forall a. Show a => a -> String
show SomeException
err
, Key
"group" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
group
, Key
"diffTime" Key -> DiffTime -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DiffTime
dt
]
toJSON (TraceBigLedgerPeersRequest Int
tBigLedgerPeers Int
nBigLedgerPeers) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"BigLedgerPeersRequest"
, Key
"targetNumberOfBigLedgerPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
tBigLedgerPeers
, Key
"numberOfBigLedgerPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
nBigLedgerPeers
]
toJSON (TraceBigLedgerPeersResults Set peerAddr
res Int
group DiffTime
dt) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"BigLedgerPeersResults"
, Key
"result" Key -> [peerAddr] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Set peerAddr -> [peerAddr]
forall a. Set a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList Set peerAddr
res
, Key
"group" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
group
, Key
"diffTime" Key -> DiffTime -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DiffTime
dt
]
toJSON (TraceBigLedgerPeersFailure SomeException
err Int
group DiffTime
dt) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"BigLedgerPeersFailure"
, Key
"reason" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SomeException -> String
forall a. Show a => a -> String
show SomeException
err
, Key
"group" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
group
, Key
"diffTime" Key -> DiffTime -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DiffTime
dt
]
toJSON (TraceForgetBigLedgerPeers Int
targetKnown Int
actualKnown Set peerAddr
sp) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ForgetBigLedgerPeers"
, Key
"targetKnown" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
targetKnown
, Key
"actualKnown" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
actualKnown
, Key
"selectedPeers" Key -> [peerAddr] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Set peerAddr -> [peerAddr]
forall a. Set a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList Set peerAddr
sp
]
toJSON (TracePeerShareRequests Int
targetKnown Int
actualKnown (PeerSharingAmount Word8
numRequested) Set peerAddr
aps Set peerAddr
sps) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PeerShareRequests"
, Key
"targetKnown" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
targetKnown
, Key
"actualKnown" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
actualKnown
, Key
"numRequested" Key -> Word8 -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Word8
numRequested
, Key
"availablePeers" Key -> [peerAddr] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Set peerAddr -> [peerAddr]
forall a. Set a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList Set peerAddr
aps
, Key
"selectedPeers" Key -> [peerAddr] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Set peerAddr -> [peerAddr]
forall a. Set a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList Set peerAddr
sps
]
toJSON (TracePeerShareResults [(peerAddr, Either SomeException (PeerSharingResult peerAddr))]
res) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PeerShareResults"
, Key
"result" Key
-> [(peerAddr, Either String (PeerSharingResult peerAddr))] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ((peerAddr, Either SomeException (PeerSharingResult peerAddr))
-> (peerAddr, Either String (PeerSharingResult peerAddr)))
-> [(peerAddr, Either SomeException (PeerSharingResult peerAddr))]
-> [(peerAddr, Either String (PeerSharingResult peerAddr))]
forall a b. (a -> b) -> [a] -> [b]
map ( (SomeException -> String)
-> Either SomeException (PeerSharingResult peerAddr)
-> Either String (PeerSharingResult peerAddr)
forall a b c. (a -> b) -> Either a c -> Either b c
forall (p :: * -> * -> *) a b c.
Bifunctor p =>
(a -> b) -> p a c -> p b c
first SomeException -> String
forall a. Show a => a -> String
show (Either SomeException (PeerSharingResult peerAddr)
-> Either String (PeerSharingResult peerAddr))
-> (peerAddr, Either SomeException (PeerSharingResult peerAddr))
-> (peerAddr, Either String (PeerSharingResult peerAddr))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ) [(peerAddr, Either SomeException (PeerSharingResult peerAddr))]
res
]
toJSON (TracePeerShareResultsFiltered [peerAddr]
res) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PeerShareResultsFiltered"
, Key
"result" Key -> [peerAddr] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [peerAddr]
res
]
toJSON (TraceForgetColdPeers Int
targetKnown Int
actualKnown Set peerAddr
sp) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ForgetColdPeers"
, Key
"targetKnown" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
targetKnown
, Key
"actualKnown" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
actualKnown
, Key
"selectedPeers" Key -> [peerAddr] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Set peerAddr -> [peerAddr]
forall a. Set a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList Set peerAddr
sp
]
toJSON (TracePromoteColdPeers Int
targetKnown Int
actualKnown Set peerAddr
sp) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PromoteColdPeers"
, Key
"targetEstablished" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
targetKnown
, Key
"actualEstablished" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
actualKnown
, Key
"selectedPeers" Key -> [peerAddr] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Set peerAddr -> [peerAddr]
forall a. Set a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList Set peerAddr
sp
]
toJSON (TracePromoteColdLocalPeers [(WarmValency, Int)]
tLocalEst Set peerAddr
sp) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PromoteColdLocalPeers"
, Key
"targetLocalEstablished" Key -> [(WarmValency, Int)] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [(WarmValency, Int)]
tLocalEst
, Key
"selectedPeers" Key -> [peerAddr] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Set peerAddr -> [peerAddr]
forall a. Set a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList Set peerAddr
sp
]
toJSON (TracePromoteColdFailed Int
tEst Int
aEst peerAddr
p DiffTime
d SomeException
err) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PromoteColdFailed"
, Key
"targetEstablished" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
tEst
, Key
"actualEstablished" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
aEst
, Key
"peer" Key -> peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= peerAddr
p
, Key
"delay" Key -> DiffTime -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DiffTime
d
, Key
"reason" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SomeException -> String
forall a. Show a => a -> String
show SomeException
err
]
toJSON (TracePromoteColdDone Int
tEst Int
aEst peerAddr
p) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PromoteColdDone"
, Key
"targetEstablished" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
tEst
, Key
"actualEstablished" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
aEst
, Key
"peer" Key -> peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= peerAddr
p
]
toJSON (TracePromoteColdBigLedgerPeers Int
targetKnown Int
actualKnown Set peerAddr
sp) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PromoteColdBigLedgerPeers"
, Key
"targetEstablished" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
targetKnown
, Key
"actualEstablished" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
actualKnown
, Key
"selectedPeers" Key -> [peerAddr] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Set peerAddr -> [peerAddr]
forall a. Set a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList Set peerAddr
sp
]
toJSON (TracePromoteColdBigLedgerPeerFailed Int
tEst Int
aEst peerAddr
p DiffTime
d SomeException
err) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PromoteColdBigLedgerPeerFailed"
, Key
"targetEstablished" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
tEst
, Key
"actualEstablished" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
aEst
, Key
"peer" Key -> peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= peerAddr
p
, Key
"delay" Key -> DiffTime -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DiffTime
d
, Key
"reason" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SomeException -> String
forall a. Show a => a -> String
show SomeException
err
]
toJSON (TracePromoteColdBigLedgerPeerDone Int
tEst Int
aEst peerAddr
p) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PromoteColdBigLedgerPeerDone"
, Key
"targetEstablished" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
tEst
, Key
"actualEstablished" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
aEst
, Key
"peer" Key -> peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= peerAddr
p
]
toJSON (TracePromoteWarmPeers Int
tActive Int
aActive Set peerAddr
sp) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PromoteWarmPeers"
, Key
"targetActive" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
tActive
, Key
"actualActive" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
aActive
, Key
"selectedPeers" Key -> [peerAddr] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Set peerAddr -> [peerAddr]
forall a. Set a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList Set peerAddr
sp
]
toJSON (TracePromoteWarmLocalPeers [(HotValency, Int)]
taa Set peerAddr
sp) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PromoteWarmLocalPeers"
, Key
"targetActualActive" Key -> [(HotValency, Int)] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [(HotValency, Int)]
taa
, Key
"selectedPeers" Key -> [peerAddr] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Set peerAddr -> [peerAddr]
forall a. Set a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList Set peerAddr
sp
]
toJSON (TracePromoteWarmFailed Int
tActive Int
aActive peerAddr
p SomeException
err) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PromoteWarmFailed"
, Key
"targetActive" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
tActive
, Key
"actualActive" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
aActive
, Key
"peer" Key -> peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= peerAddr
p
, Key
"reason" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SomeException -> String
forall a. Show a => a -> String
show SomeException
err
]
toJSON (TracePromoteWarmDone Int
tActive Int
aActive peerAddr
p) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PromoteWarmDone"
, Key
"targetActive" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
tActive
, Key
"actualActive" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
aActive
, Key
"peer" Key -> peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= peerAddr
p
]
toJSON (TracePromoteWarmAborted Int
tActive Int
aActive peerAddr
p) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PromoteWarmAborted"
, Key
"targetActive" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
tActive
, Key
"actualActive" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
aActive
, Key
"peer" Key -> peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= peerAddr
p
]
toJSON (TracePromoteWarmBigLedgerPeers Int
tActive Int
aActive Set peerAddr
sp) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PromoteWarmBigLedgerPeers"
, Key
"targetActive" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
tActive
, Key
"actualActive" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
aActive
, Key
"selectedPeers" Key -> [peerAddr] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Set peerAddr -> [peerAddr]
forall a. Set a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList Set peerAddr
sp
]
toJSON (TracePromoteWarmBigLedgerPeerFailed Int
tActive Int
aActive peerAddr
p SomeException
err) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PromoteWarmBigLedgerPeerFailed"
, Key
"targetActive" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
tActive
, Key
"actualActive" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
aActive
, Key
"peer" Key -> peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= peerAddr
p
, Key
"reason" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SomeException -> String
forall a. Show a => a -> String
show SomeException
err
]
toJSON (TracePromoteWarmBigLedgerPeerDone Int
tActive Int
aActive peerAddr
p) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PromoteWarmBigLedgerPeerDone"
, Key
"targetActive" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
tActive
, Key
"actualActive" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
aActive
, Key
"peer" Key -> peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= peerAddr
p
]
toJSON (TracePromoteWarmBigLedgerPeerAborted Int
tActive Int
aActive peerAddr
p) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PromoteWarmBigLedgerPeerAborted"
, Key
"targetActive" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
tActive
, Key
"actualActive" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
aActive
, Key
"peer" Key -> peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= peerAddr
p
]
toJSON (TraceDemoteWarmPeers Int
tEst Int
aEst Set peerAddr
sp) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"DemoteWarmPeers"
, Key
"targetEstablished" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
tEst
, Key
"actualEstablished" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
aEst
, Key
"selectedPeers" Key -> [peerAddr] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Set peerAddr -> [peerAddr]
forall a. Set a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList Set peerAddr
sp
]
toJSON (TraceDemoteWarmFailed Int
tEst Int
aEst peerAddr
p SomeException
err) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"DemoteWarmFailed"
, Key
"targetEstablished" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
tEst
, Key
"actualEstablished" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
aEst
, Key
"peer" Key -> peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= peerAddr
p
, Key
"reason" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SomeException -> String
forall a. Show a => a -> String
show SomeException
err
]
toJSON (TraceDemoteWarmDone Int
tEst Int
aEst peerAddr
p) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"DemoteWarmDone"
, Key
"targetEstablished" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
tEst
, Key
"actualEstablished" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
aEst
, Key
"peer" Key -> peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= peerAddr
p
]
toJSON (TraceDemoteWarmBigLedgerPeers Int
tEst Int
aEst Set peerAddr
sp) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"DemoteWarmBigLedgerPeers"
, Key
"targetEstablished" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
tEst
, Key
"actualEstablished" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
aEst
, Key
"selectedPeers" Key -> [peerAddr] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Set peerAddr -> [peerAddr]
forall a. Set a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList Set peerAddr
sp
]
toJSON (TraceDemoteWarmBigLedgerPeerFailed Int
tEst Int
aEst peerAddr
p SomeException
err) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"DemoteWarmBigLedgerPeerFailed"
, Key
"targetEstablished" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
tEst
, Key
"actualEstablished" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
aEst
, Key
"peer" Key -> peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= peerAddr
p
, Key
"reason" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SomeException -> String
forall a. Show a => a -> String
show SomeException
err
]
toJSON (TraceDemoteWarmBigLedgerPeerDone Int
tEst Int
aEst peerAddr
p) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"DemoteWarmBigLedgerPeerDone"
, Key
"targetEstablished" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
tEst
, Key
"actualEstablished" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
aEst
, Key
"peer" Key -> peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= peerAddr
p
]
toJSON (TraceDemoteHotPeers Int
tActive Int
aActive Set peerAddr
sp) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"DemoteHotPeers"
, Key
"targetActive" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
tActive
, Key
"actualActive" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
aActive
, Key
"selectedPeers" Key -> [peerAddr] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Set peerAddr -> [peerAddr]
forall a. Set a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList Set peerAddr
sp
]
toJSON (TraceDemoteLocalHotPeers [(HotValency, Int)]
taa Set peerAddr
sp) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"DemoteLocalHotPeers"
, Key
"targetActualActive" Key -> [(HotValency, Int)] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [(HotValency, Int)]
taa
, Key
"selectedPeers" Key -> [peerAddr] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Set peerAddr -> [peerAddr]
forall a. Set a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList Set peerAddr
sp
]
toJSON (TraceDemoteHotFailed Int
tActive Int
aActive peerAddr
p SomeException
err) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"DemoteHotFailed"
, Key
"targetActive" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
tActive
, Key
"actualActive" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
aActive
, Key
"peer" Key -> peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= peerAddr
p
, Key
"reason" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SomeException -> String
forall a. Show a => a -> String
show SomeException
err
]
toJSON (TraceDemoteHotDone Int
tActive Int
aActive peerAddr
p) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"DemoteHotDone"
, Key
"targetActive" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
tActive
, Key
"actualActive" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
aActive
, Key
"peer" Key -> peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= peerAddr
p
]
toJSON (TraceDemoteHotBigLedgerPeers Int
tActive Int
aActive Set peerAddr
sp) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"DemoteHotBigLedgerPeers"
, Key
"targetActive" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
tActive
, Key
"actualActive" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
aActive
, Key
"selectedPeers" Key -> [peerAddr] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Set peerAddr -> [peerAddr]
forall a. Set a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList Set peerAddr
sp
]
toJSON (TraceDemoteHotBigLedgerPeerFailed Int
tActive Int
aActive peerAddr
p SomeException
err) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"DemoteHotBigLedgerPeerFailed"
, Key
"targetActive" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
tActive
, Key
"actualActive" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
aActive
, Key
"peer" Key -> peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= peerAddr
p
, Key
"reason" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SomeException -> String
forall a. Show a => a -> String
show SomeException
err
]
toJSON (TraceDemoteHotBigLedgerPeerDone Int
tActive Int
aActive peerAddr
p) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"DemoteHotBigLedgerPeerDone"
, Key
"targetActive" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
tActive
, Key
"actualActive" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
aActive
, Key
"peer" Key -> peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= peerAddr
p
]
toJSON (TraceDemoteAsynchronous Map peerAddr (PeerStatus, Maybe RepromoteDelay)
msp) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"DemoteAsynchronous"
, Key
"state" Key -> Map peerAddr (PeerStatus, Maybe RepromoteDelay) -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Map peerAddr (PeerStatus, Maybe RepromoteDelay)
msp
]
toJSON (TraceDemoteLocalAsynchronous Map peerAddr (PeerStatus, Maybe RepromoteDelay)
msp) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"DemoteLocalAsynchronous"
, Key
"state" Key -> Map peerAddr (PeerStatus, Maybe RepromoteDelay) -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Map peerAddr (PeerStatus, Maybe RepromoteDelay)
msp
]
toJSON (TraceDemoteBigLedgerPeersAsynchronous Map peerAddr (PeerStatus, Maybe RepromoteDelay)
msp) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"DemoteBigLedgerPeersAsynchronous"
, Key
"state" Key -> Map peerAddr (PeerStatus, Maybe RepromoteDelay) -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Map peerAddr (PeerStatus, Maybe RepromoteDelay)
msp
]
toJSON TracePeerSelection extraDebugState extraFlags extraPeers peerAddr
TraceGovernorWakeup =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"GovernorWakeup"
]
toJSON (TraceChurnWait DiffTime
dt) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ChurnWait"
, Key
"diffTime" Key -> DiffTime -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DiffTime
dt
]
toJSON (TracePickInboundPeers Int
targetNumberOfKnownPeers Int
numberOfKnownPeers Map peerAddr PeerSharing
selected Set peerAddr
available) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PickInboundPeers"
, Key
"targetKnown" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
targetNumberOfKnownPeers
, Key
"actualKnown" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
numberOfKnownPeers
, Key
"selected" Key -> Map peerAddr PeerSharing -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Map peerAddr PeerSharing
selected
, Key
"available" Key -> Set peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Set peerAddr
available
]
toJSON (TraceLedgerStateJudgementChanged LedgerStateJudgement
new) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"LedgerStateJudgementChanged"
, Key
"LedgerStateJudgement" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= LedgerStateJudgement -> String
forall a. Show a => a -> String
show LedgerStateJudgement
new
]
toJSON TracePeerSelection extraDebugState extraFlags extraPeers peerAddr
TraceOnlyBootstrapPeers =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"OnlyBootstrapPeers" ]
toJSON (TraceUseBootstrapPeersChanged UseBootstrapPeers
ubp) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"UseBootstrapPeersChanged"
, Key
"UseBootstrapPeers" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= UseBootstrapPeers -> String
forall a. Show a => a -> String
show UseBootstrapPeers
ubp
]
toJSON TracePeerSelection extraDebugState extraFlags extraPeers peerAddr
TraceBootstrapPeersFlagChangedWhilstInSensitiveState =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"BootstrapPeersFlagChangedWhilstInSensitiveState"
]
toJSON (TraceVerifyPeerSnapshot Bool
result) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"VerifyPeerSnapshot"
, Key
"result" Key -> Bool -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Bool
result ]
toJSON (TraceOutboundGovernorCriticalFailure SomeException
err) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"OutboundGovernorCriticalFailure"
, Key
"reason" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SomeException -> String
forall a. Show a => a -> String
show SomeException
err
]
toJSON (TraceChurnAction DiffTime
duration ChurnAction
action Int
counter) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ChurnAction"
, Key
"action" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ChurnAction -> String
forall a. Show a => a -> String
show ChurnAction
action
, Key
"counter" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
counter
, Key
"duration" Key -> DiffTime -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DiffTime
duration
]
toJSON (TraceChurnTimeout DiffTime
duration ChurnAction
action Int
counter) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ChurnTimeout"
, Key
"action" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ChurnAction -> String
forall a. Show a => a -> String
show ChurnAction
action
, Key
"counter" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
counter
, Key
"duration" Key -> DiffTime -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DiffTime
duration
]
toJSON (TraceDebugState Time
mtime DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
ds) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"DebugState"
, Key
"monotonicTime" Key -> Time -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Time
mtime
, Key
"targets" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= PeerSelectionTargets -> Value
peerSelectionTargetsToObject (DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
-> PeerSelectionTargets
forall extraState extraFlags extraPeers peeraddr.
DebugPeerSelectionState extraState extraFlags extraPeers peeraddr
-> PeerSelectionTargets
dpssTargets DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
ds)
, Key
"localRootPeers" Key -> LocalRootPeers extraFlags peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
-> LocalRootPeers extraFlags peerAddr
forall extraState extraFlags extraPeers peeraddr.
DebugPeerSelectionState extraState extraFlags extraPeers peeraddr
-> LocalRootPeers extraFlags peeraddr
dpssLocalRootPeers DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
ds
, Key
"publicRootPeers" Key -> PublicRootPeers extraPeers peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
-> PublicRootPeers extraPeers peerAddr
forall extraState extraFlags extraPeers peeraddr.
DebugPeerSelectionState extraState extraFlags extraPeers peeraddr
-> PublicRootPeers extraPeers peeraddr
dpssPublicRootPeers DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
ds
, Key
"knownPeers" Key -> Map peerAddr KnownPeerInfo -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= KnownPeers peerAddr -> Map peerAddr KnownPeerInfo
forall peeraddr. KnownPeers peeraddr -> Map peeraddr KnownPeerInfo
KnownPeers.allPeers (DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
-> KnownPeers peerAddr
forall extraState extraFlags extraPeers peeraddr.
DebugPeerSelectionState extraState extraFlags extraPeers peeraddr
-> KnownPeers peeraddr
dpssKnownPeers DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
ds)
, Key
"establishedPeers" Key -> Set peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
-> Set peerAddr
forall extraState extraFlags extraPeers peeraddr.
DebugPeerSelectionState extraState extraFlags extraPeers peeraddr
-> Set peeraddr
dpssEstablishedPeers DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
ds
, Key
"activePeers" Key -> Set peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
-> Set peerAddr
forall extraState extraFlags extraPeers peeraddr.
DebugPeerSelectionState extraState extraFlags extraPeers peeraddr
-> Set peeraddr
dpssActivePeers DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
ds
, Key
"publicRootBackoffs" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
-> Int
forall extraState extraFlags extraPeers peeraddr.
DebugPeerSelectionState extraState extraFlags extraPeers peeraddr
-> Int
dpssPublicRootBackoffs DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
ds
, Key
"publicRootRetryTime" Key -> Time -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
-> Time
forall extraState extraFlags extraPeers peeraddr.
DebugPeerSelectionState extraState extraFlags extraPeers peeraddr
-> Time
dpssPublicRootRetryTime DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
ds
, Key
"bigLedgerPeerBackoffs" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
-> Int
forall extraState extraFlags extraPeers peeraddr.
DebugPeerSelectionState extraState extraFlags extraPeers peeraddr
-> Int
dpssBigLedgerPeerBackoffs DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
ds
, Key
"bigLedgerPeerRetryTime" Key -> Time -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
-> Time
forall extraState extraFlags extraPeers peeraddr.
DebugPeerSelectionState extraState extraFlags extraPeers peeraddr
-> Time
dpssBigLedgerPeerRetryTime DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
ds
, Key
"inProgressBigLedgerPeersReq" Key -> Bool -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
-> Bool
forall extraState extraFlags extraPeers peeraddr.
DebugPeerSelectionState extraState extraFlags extraPeers peeraddr
-> Bool
dpssInProgressBigLedgerPeersReq DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
ds
, Key
"inProgressPeerShareReqs" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
-> Int
forall extraState extraFlags extraPeers peeraddr.
DebugPeerSelectionState extraState extraFlags extraPeers peeraddr
-> Int
dpssInProgressPeerShareReqs DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
ds
, Key
"inProgressPromoteCold" Key -> Set peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
-> Set peerAddr
forall extraState extraFlags extraPeers peeraddr.
DebugPeerSelectionState extraState extraFlags extraPeers peeraddr
-> Set peeraddr
dpssInProgressPromoteCold DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
ds
, Key
"inProgressPromoteWarm" Key -> Set peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
-> Set peerAddr
forall extraState extraFlags extraPeers peeraddr.
DebugPeerSelectionState extraState extraFlags extraPeers peeraddr
-> Set peeraddr
dpssInProgressPromoteWarm DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
ds
, Key
"inProgressDemoteWarm" Key -> Set peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
-> Set peerAddr
forall extraState extraFlags extraPeers peeraddr.
DebugPeerSelectionState extraState extraFlags extraPeers peeraddr
-> Set peeraddr
dpssInProgressDemoteWarm DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
ds
, Key
"inProgressDemoteHot" Key -> Set peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
-> Set peerAddr
forall extraState extraFlags extraPeers peeraddr.
DebugPeerSelectionState extraState extraFlags extraPeers peeraddr
-> Set peeraddr
dpssInProgressDemoteHot DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
ds
, Key
"inProgressDemoteToCold" Key -> Set peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
-> Set peerAddr
forall extraState extraFlags extraPeers peeraddr.
DebugPeerSelectionState extraState extraFlags extraPeers peeraddr
-> Set peeraddr
dpssInProgressDemoteToCold DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
ds
, Key
"upstreamyness" Key -> Map peerAddr Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
-> Map peerAddr Int
forall extraState extraFlags extraPeers peeraddr.
DebugPeerSelectionState extraState extraFlags extraPeers peeraddr
-> Map peeraddr Int
dpssUpstreamyness DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
ds
, Key
"fetchynessBlocks" Key -> Map peerAddr Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
-> Map peerAddr Int
forall extraState extraFlags extraPeers peeraddr.
DebugPeerSelectionState extraState extraFlags extraPeers peeraddr
-> Map peeraddr Int
dpssFetchynessBlocks DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
ds
, Key
"ledgerStateJudgement" Key -> extraDebugState -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
-> extraDebugState
forall extraState extraFlags extraPeers peeraddr.
DebugPeerSelectionState extraState extraFlags extraPeers peeraddr
-> extraState
dpssExtraState DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
ds
, Key
"associationMode" Key -> AssociationMode -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
-> AssociationMode
forall extraState extraFlags extraPeers peeraddr.
DebugPeerSelectionState extraState extraFlags extraPeers peeraddr
-> AssociationMode
dpssAssociationMode DebugPeerSelectionState
extraDebugState extraFlags extraPeers peerAddr
ds
]
peerSelectionTargetsToObject :: PeerSelectionTargets -> Value
peerSelectionTargetsToObject :: PeerSelectionTargets -> Value
peerSelectionTargetsToObject
PeerSelectionTargets { Int
targetNumberOfRootPeers :: Int
targetNumberOfRootPeers :: PeerSelectionTargets -> Int
targetNumberOfRootPeers,
Int
targetNumberOfKnownPeers :: Int
targetNumberOfKnownPeers :: PeerSelectionTargets -> Int
targetNumberOfKnownPeers,
Int
targetNumberOfEstablishedPeers :: Int
targetNumberOfEstablishedPeers :: PeerSelectionTargets -> Int
targetNumberOfEstablishedPeers,
Int
targetNumberOfActivePeers :: Int
targetNumberOfActivePeers :: PeerSelectionTargets -> Int
targetNumberOfActivePeers,
Int
targetNumberOfKnownBigLedgerPeers :: Int
targetNumberOfKnownBigLedgerPeers :: PeerSelectionTargets -> Int
targetNumberOfKnownBigLedgerPeers,
Int
targetNumberOfEstablishedBigLedgerPeers :: Int
targetNumberOfEstablishedBigLedgerPeers :: PeerSelectionTargets -> Int
targetNumberOfEstablishedBigLedgerPeers,
Int
targetNumberOfActiveBigLedgerPeers :: Int
targetNumberOfActiveBigLedgerPeers :: PeerSelectionTargets -> Int
targetNumberOfActiveBigLedgerPeers
} =
[Pair] -> Value
object
[ Key
"roots" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
targetNumberOfRootPeers
, Key
"knownPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
targetNumberOfKnownPeers
, Key
"established" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
targetNumberOfEstablishedPeers
, Key
"active" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
targetNumberOfActivePeers
, Key
"knownBigLedgerPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
targetNumberOfKnownBigLedgerPeers
, Key
"establishedBigLedgerPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
targetNumberOfEstablishedBigLedgerPeers
, Key
"activeBigLedgerPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
targetNumberOfActiveBigLedgerPeers
]
instance ToJSON ChurnCounters where
toJSON :: ChurnCounters -> Value
toJSON (ChurnCounter ChurnAction
action Int
cnt) =
[Pair] -> Value
object [ Key
"action" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ChurnAction -> String
forall a. Show a => a -> String
show ChurnAction
action
, Key
"counter" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
cnt
]
instance (ToJSON peerAddr, Show peerAddr, Show versionNumber)
=> ToJSON (PeerSelectionActionsTrace peerAddr versionNumber) where
toJSON :: PeerSelectionActionsTrace peerAddr versionNumber -> Value
toJSON (PeerStatusChanged PeerStatusChangeType peerAddr
ps) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PeerStatusChanged"
, Key
"peerStatusChangeType" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= PeerStatusChangeType peerAddr -> String
forall a. Show a => a -> String
show PeerStatusChangeType peerAddr
ps
]
toJSON (PeerStatusChangeFailure PeerStatusChangeType peerAddr
ps FailureType versionNumber
f) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PeerStatusChangeFailure"
, Key
"peerStatusChangeType" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text)
-> (PeerStatusChangeType peerAddr -> String)
-> PeerStatusChangeType peerAddr
-> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PeerStatusChangeType peerAddr -> String
forall a. Show a => a -> String
show (PeerStatusChangeType peerAddr -> Text)
-> PeerStatusChangeType peerAddr -> Text
forall a b. (a -> b) -> a -> b
$ PeerStatusChangeType peerAddr
ps)
, Key
"reason" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= FailureType versionNumber -> String
forall a. Show a => a -> String
show FailureType versionNumber
f
]
toJSON (PeerMonitoringError ConnectionId peerAddr
connId SomeException
s) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PeerMonitoringError"
, Key
"connectionId" Key -> ConnectionId peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ConnectionId peerAddr
connId
, Key
"reason" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SomeException -> String
forall a. Show a => a -> String
show SomeException
s
]
toJSON (PeerMonitoringResult ConnectionId peerAddr
connId Maybe (WithSomeProtocolTemperature FirstToFinishResult)
wf) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PeerMonitoringResult"
, Key
"connectionId" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ConnectionId peerAddr -> Value
forall a. ToJSON a => a -> Value
toJSON ConnectionId peerAddr
connId
, Key
"withProtocolTemp" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe (WithSomeProtocolTemperature FirstToFinishResult) -> String
forall a. Show a => a -> String
show Maybe (WithSomeProtocolTemperature FirstToFinishResult)
wf
]
toJSON (AcquireConnectionError SomeException
exception) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"AcquireConnectionError"
, Key
"error" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SomeException -> String
forall e. Exception e => e -> String
displayException SomeException
exception
]
toJSON (PeerHotDuration ConnectionId peerAddr
connId DiffTime
duration) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PeerHotDuration"
, Key
"connId" Key -> ConnectionId peerAddr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ConnectionId peerAddr
connId
, Key
"duration" Key -> DiffTime -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DiffTime
duration
]
instance (Show versionNumber, ToJSON versionNumber, ToJSON agreedOptions)
=> ToJSON (ConnectionHandlerTrace versionNumber agreedOptions) where
toJSON :: ConnectionHandlerTrace versionNumber agreedOptions -> Value
toJSON (TrHandshakeSuccess versionNumber
versionNumber agreedOptions
agreedOptions) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"HandshakeSuccess"
, Key
"versionNumber" Key -> versionNumber -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= versionNumber
versionNumber
, Key
"agreedOptions" Key -> agreedOptions -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= agreedOptions
agreedOptions
]
toJSON (TrHandshakeQuery Map versionNumber (Either Text agreedOptions)
vMap) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"HandshakeQuery"
, Key
"versions" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [Value] -> Value
forall a. ToJSON a => a -> Value
toJSON ((\(versionNumber
k,Either Text agreedOptions
v) -> [Pair] -> Value
object [
Key
"versionNumber" Key -> versionNumber -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= versionNumber
k
, Key
"options" Key -> Either Text agreedOptions -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Either Text agreedOptions
v
]) ((versionNumber, Either Text agreedOptions) -> Value)
-> [(versionNumber, Either Text agreedOptions)] -> [Value]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Map versionNumber (Either Text agreedOptions)
-> [(versionNumber, Either Text agreedOptions)]
forall k a. Map k a -> [(k, a)]
Map.toList Map versionNumber (Either Text agreedOptions)
vMap)
]
toJSON (TrHandshakeClientError HandshakeException versionNumber
err) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"HandshakeClientError"
, Key
"reason" Key -> HandshakeException versionNumber -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= HandshakeException versionNumber
err
]
toJSON (TrHandshakeServerError HandshakeException versionNumber
err) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"HandshakeServerError"
, Key
"reason" Key -> HandshakeException versionNumber -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= HandshakeException versionNumber
err
]
toJSON (TrConnectionHandlerError ErrorContext
e SomeException
err ErrorCommand
cerr) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"Error"
, Key
"context" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ErrorContext -> String
forall a. Show a => a -> String
show ErrorContext
e
, Key
"reason" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SomeException -> String
forall a. Show a => a -> String
show SomeException
err
, Key
"command" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ErrorCommand -> String
forall a. Show a => a -> String
show ErrorCommand
cerr
]
instance (Show addr, Show versionNumber, Show agreedOptions,
ToJSON addr, ToJSON versionNumber, ToJSON agreedOptions)
=> ToJSON (ConnMgr.Trace addr (ConnectionHandlerTrace versionNumber agreedOptions)) where
toJSON :: Trace addr (ConnectionHandlerTrace versionNumber agreedOptions)
-> Value
toJSON = \case
TrIncludeConnection Provenance
prov addr
peerAddr ->
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"IncludeConnection"
, Key
"remoteAddress" Key -> addr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= addr
peerAddr
, Key
"provenance" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text) -> (Provenance -> String) -> Provenance -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Provenance -> String
forall a. Show a => a -> String
show (Provenance -> Text) -> Provenance -> Text
forall a b. (a -> b) -> a -> b
$ Provenance
prov)
]
TrReleaseConnection Provenance
prov ConnectionId addr
connId ->
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"UnregisterConnection"
, Key
"remoteAddress" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ConnectionId addr -> Value
forall a. ToJSON a => a -> Value
toJSON ConnectionId addr
connId
, Key
"provenance" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text) -> (Provenance -> String) -> Provenance -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Provenance -> String
forall a. Show a => a -> String
show (Provenance -> Text) -> Provenance -> Text
forall a b. (a -> b) -> a -> b
$ Provenance
prov)
]
TrConnect (Just addr
localAddress) addr
remoteAddress DiffusionMode
diffusionMode ->
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"Connect"
, Key
"connectionId" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ConnectionId addr -> Value
forall a. ToJSON a => a -> Value
toJSON ConnectionId { addr
localAddress :: addr
localAddress :: addr
localAddress, addr
remoteAddress :: addr
remoteAddress :: addr
remoteAddress }
, Key
"diffusionMode" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DiffusionMode -> Value
forall a. ToJSON a => a -> Value
toJSON DiffusionMode
diffusionMode
]
TrConnect Maybe addr
Nothing addr
remoteAddress DiffusionMode
diffusionMode ->
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"Connect"
, Key
"remoteAddress" Key -> addr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= addr
remoteAddress
, Key
"diffusionMode" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DiffusionMode -> Value
forall a. ToJSON a => a -> Value
toJSON DiffusionMode
diffusionMode
]
TrConnectError (Just addr
localAddress) addr
remoteAddress SomeException
err ->
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ConnectError"
, Key
"connectionId" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ConnectionId addr -> Value
forall a. ToJSON a => a -> Value
toJSON ConnectionId { addr
localAddress :: addr
localAddress :: addr
localAddress, addr
remoteAddress :: addr
remoteAddress :: addr
remoteAddress }
, Key
"reason" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text)
-> (SomeException -> String) -> SomeException -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SomeException -> String
forall a. Show a => a -> String
show (SomeException -> Text) -> SomeException -> Text
forall a b. (a -> b) -> a -> b
$ SomeException
err)
]
TrConnectError Maybe addr
Nothing addr
remoteAddress SomeException
err ->
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ConnectError"
, Key
"remoteAddress" Key -> addr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= addr
remoteAddress
, Key
"reason" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text)
-> (SomeException -> String) -> SomeException -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SomeException -> String
forall a. Show a => a -> String
show (SomeException -> Text) -> SomeException -> Text
forall a b. (a -> b) -> a -> b
$ SomeException
err)
]
TrTerminatingConnection Provenance
prov ConnectionId addr
connId ->
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"TerminatingConnection"
, Key
"provenance" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text) -> (Provenance -> String) -> Provenance -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Provenance -> String
forall a. Show a => a -> String
show (Provenance -> Text) -> Provenance -> Text
forall a b. (a -> b) -> a -> b
$ Provenance
prov)
, Key
"connectionId" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ConnectionId addr -> Value
forall a. ToJSON a => a -> Value
toJSON ConnectionId addr
connId
]
TrTerminatedConnection Provenance
prov addr
remoteAddress ->
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"TerminatedConnection"
, Key
"provenance" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text) -> (Provenance -> String) -> Provenance -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Provenance -> String
forall a. Show a => a -> String
show (Provenance -> Text) -> Provenance -> Text
forall a b. (a -> b) -> a -> b
$ Provenance
prov)
, Key
"remoteAddress" Key -> addr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= addr
remoteAddress
]
TrConnectionHandler ConnectionId addr
connId ConnectionHandlerTrace versionNumber agreedOptions
a ->
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ConnectionHandler"
, Key
"connectionId" Key -> ConnectionId addr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ConnectionId addr
connId
, Key
"connectionHandler" Key -> ConnectionHandlerTrace versionNumber agreedOptions -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ConnectionHandlerTrace versionNumber agreedOptions
a
]
Trace addr (ConnectionHandlerTrace versionNumber agreedOptions)
TrShutdown ->
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"Shutdown"
]
TrConnectionExists Provenance
prov addr
remoteAddress AbstractState
inState ->
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ConnectionExists"
, Key
"provenance" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text) -> (Provenance -> String) -> Provenance -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Provenance -> String
forall a. Show a => a -> String
show (Provenance -> Text) -> Provenance -> Text
forall a b. (a -> b) -> a -> b
$ Provenance
prov)
, Key
"remoteAddress" Key -> addr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= addr
remoteAddress
, Key
"state" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= AbstractState -> Value
forall a. ToJSON a => a -> Value
toJSON AbstractState
inState
]
TrForbiddenConnection ConnectionId addr
connId ->
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ForbiddenConnection"
, Key
"connectionId" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ConnectionId addr -> Value
forall a. ToJSON a => a -> Value
toJSON ConnectionId addr
connId
]
TrConnectionFailure ConnectionId addr
connId ->
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ConnectionFailure"
, Key
"connectionId" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ConnectionId addr -> Value
forall a. ToJSON a => a -> Value
toJSON ConnectionId addr
connId
]
TrConnectionNotFound Provenance
prov addr
remoteAddress ->
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ConnectionNotFound"
, Key
"remoteAddress" Key -> addr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= addr
remoteAddress
, Key
"provenance" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text) -> (Provenance -> String) -> Provenance -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Provenance -> String
forall a. Show a => a -> String
show (Provenance -> Text) -> Provenance -> Text
forall a b. (a -> b) -> a -> b
$ Provenance
prov)
]
TrForbiddenOperation addr
remoteAddress AbstractState
connState ->
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ForbiddenOperation"
, Key
"remoteAddress" Key -> addr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= addr
remoteAddress
, Key
"connectionState" Key -> AbstractState -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= AbstractState
connState
]
TrPruneConnections Set (ConnectionId addr)
pruningSet Int
numberPruned Set (ConnectionId addr)
chosenPeers ->
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PruneConnections"
, Key
"prunedPeers" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Set (ConnectionId addr) -> Value
forall a. ToJSON a => a -> Value
toJSON Set (ConnectionId addr)
pruningSet
, Key
"numberPrunedPeers" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int -> Value
forall a. ToJSON a => a -> Value
toJSON Int
numberPruned
, Key
"choiceSet" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Set Value -> Value
forall a. ToJSON a => a -> Value
toJSON (ConnectionId addr -> Value
forall a. ToJSON a => a -> Value
toJSON (ConnectionId addr -> Value)
-> Set (ConnectionId addr) -> Set Value
forall b a. Ord b => (a -> b) -> Set a -> Set b
`Set.map` Set (ConnectionId addr)
chosenPeers)
]
TrConnectionCleanup ConnectionId addr
connId ->
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ConnectionCleanup"
, Key
"connectionId" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ConnectionId addr -> Value
forall a. ToJSON a => a -> Value
toJSON ConnectionId addr
connId
]
TrConnectionTimeWait ConnectionId addr
connId ->
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ConnectionTimeWait"
, Key
"connectionId" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ConnectionId addr -> Value
forall a. ToJSON a => a -> Value
toJSON ConnectionId addr
connId
]
TrConnectionTimeWaitDone ConnectionId addr
connId ->
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ConnectionTimeWaitDone"
, Key
"connectionId" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ConnectionId addr -> Value
forall a. ToJSON a => a -> Value
toJSON ConnectionId addr
connId
]
TrConnectionManagerCounters ConnectionManagerCounters
cmCounters ->
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ConnectionManagerCounters"
, Key
"state" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ConnectionManagerCounters -> Value
forall a. ToJSON a => a -> Value
toJSON ConnectionManagerCounters
cmCounters
]
TrState ConnMap addr AbstractState
cmState ->
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ConnectionManagerState"
, Key
"state" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ((addr, Map (LocalAddr addr) AbstractState) -> Value)
-> [(addr, Map (LocalAddr addr) AbstractState)] -> Value
forall a. (a -> Value) -> [a] -> Value
listValue (\(addr
remoteAddr, Map (LocalAddr addr) AbstractState
inner) ->
[Pair] -> Value
object
[ Key
"connections" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.=
((LocalAddr addr, AbstractState) -> Value)
-> [(LocalAddr addr, AbstractState)] -> Value
forall a. (a -> Value) -> [a] -> Value
listValue (\(LocalAddr addr
localAddr, AbstractState
connState) ->
[Pair] -> Value
object
[ Key
"localAddress" Key -> LocalAddr addr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= LocalAddr addr
localAddr
, Key
"state" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= AbstractState -> Value
forall a. ToJSON a => a -> Value
toJSON AbstractState
connState
]
)
(Map (LocalAddr addr) AbstractState
-> [(LocalAddr addr, AbstractState)]
forall k a. Map k a -> [(k, a)]
Map.toList Map (LocalAddr addr) AbstractState
inner)
, Key
"remoteAddress" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= addr -> Value
forall a. ToJSON a => a -> Value
toJSON addr
remoteAddr
]
)
(Map addr (Map (LocalAddr addr) AbstractState)
-> [(addr, Map (LocalAddr addr) AbstractState)]
forall k a. Map k a -> [(k, a)]
Map.toList (ConnMap addr AbstractState
-> Map addr (Map (LocalAddr addr) AbstractState)
forall peerAddr a.
ConnMap peerAddr a -> Map peerAddr (Map (LocalAddr peerAddr) a)
getConnMap ConnMap addr AbstractState
cmState))
]
ConnMgr.TrUnexpectedlyFalseAssertion AssertionLocation addr
info ->
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"UnexpectedlyFalseAssertion"
, Key
"info" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text)
-> (AssertionLocation addr -> String)
-> AssertionLocation addr
-> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AssertionLocation addr -> String
forall a. Show a => a -> String
show (AssertionLocation addr -> Text) -> AssertionLocation addr -> Text
forall a b. (a -> b) -> a -> b
$ AssertionLocation addr
info)
]
instance (Show addr, ToJSON addr)
=> ToJSON (ConnMgr.AbstractTransitionTrace addr) where
toJSON :: AbstractTransitionTrace addr -> Value
toJSON (ConnMgr.TransitionTrace addr
addr Transition' AbstractState
tr) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ConnectionManagerTransition"
, Key
"address" Key -> addr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= addr
addr
, Key
"from" Key -> AbstractState -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Transition' AbstractState -> AbstractState
forall state. Transition' state -> state
ConnMgr.fromState Transition' AbstractState
tr
, Key
"to" Key -> AbstractState -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Transition' AbstractState -> AbstractState
forall state. Transition' state -> state
ConnMgr.toState Transition' AbstractState
tr
]
instance ToJSON AcceptConnectionsPolicyTrace where
toJSON :: AcceptConnectionsPolicyTrace -> Value
toJSON (ServerTraceAcceptConnectionRateLimiting DiffTime
delay Int
numOfConnections) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ServerTraceAcceptConnectionRateLimiting"
, Key
"delay" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DiffTime -> String
forall a. Show a => a -> String
show DiffTime
delay
, Key
"numberOfConnection" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int -> String
forall a. Show a => a -> String
show Int
numOfConnections
]
toJSON (ServerTraceAcceptConnectionHardLimit Word32
softLimit) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ServerTraceAcceptConnectionHardLimit"
, Key
"softLimit" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Word32 -> String
forall a. Show a => a -> String
show Word32
softLimit
]
toJSON (ServerTraceAcceptConnectionResume Int
numOfConnections) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ServerTraceAcceptConnectionResume"
, Key
"numberOfConnection" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int -> String
forall a. Show a => a -> String
show Int
numOfConnections
]
instance (Show addr, ToJSON addr)
=> ToJSON (Server.Trace addr) where
toJSON :: Trace addr -> Value
toJSON (Server.TrAcceptConnection ConnectionId addr
connId) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"AcceptConnection"
, Key
"connectionId" Key -> ConnectionId addr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ConnectionId addr
connId
]
toJSON (Server.TrAcceptError SomeException
exception) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"AcceptError"
, Key
"error" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SomeException -> String
forall a. Show a => a -> String
show SomeException
exception
]
toJSON (Server.TrAcceptPolicyTrace AcceptConnectionsPolicyTrace
policyTrace) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"AcceptPolicyServer.Trace"
, Key
"policy" Key -> AcceptConnectionsPolicyTrace -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= AcceptConnectionsPolicyTrace
policyTrace
]
toJSON (Server.TrServerStarted [addr]
peerAddrs) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"AcceptPolicyServer.Trace"
, Key
"addresses" Key -> [addr] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [addr]
peerAddrs
]
toJSON Trace addr
Server.TrServerStopped =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ServerStopped"
]
toJSON (Server.TrServerError SomeException
exception) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ServerError"
, Key
"reason" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SomeException -> String
forall a. Show a => a -> String
show SomeException
exception
]
instance (ToJSON addr, ToJSONKey addr, Show addr)
=> ToJSON (InboundGovernor.Trace addr) where
toJSON :: Trace addr -> Value
toJSON (InboundGovernor.TrNewConnection Provenance
p ConnectionId addr
connId) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"NewConnection"
, Key
"provenance" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Provenance -> String
forall a. Show a => a -> String
show Provenance
p
, Key
"connectionId" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ConnectionId addr -> Value
forall a. ToJSON a => a -> Value
toJSON ConnectionId addr
connId
]
toJSON (InboundGovernor.TrResponderRestarted ConnectionId addr
connId MiniProtocolNum
m) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ResponderStarted"
, Key
"connectionId" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ConnectionId addr -> Value
forall a. ToJSON a => a -> Value
toJSON ConnectionId addr
connId
, Key
"miniProtocolNum" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= MiniProtocolNum -> Value
forall a. ToJSON a => a -> Value
toJSON MiniProtocolNum
m
]
toJSON (InboundGovernor.TrResponderStartFailure ConnectionId addr
connId MiniProtocolNum
m SomeException
s) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ResponderStartFailure"
, Key
"connectionId" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ConnectionId addr -> Value
forall a. ToJSON a => a -> Value
toJSON ConnectionId addr
connId
, Key
"miniProtocolNum" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= MiniProtocolNum -> Value
forall a. ToJSON a => a -> Value
toJSON MiniProtocolNum
m
, Key
"reason" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SomeException -> String
forall a. Show a => a -> String
show SomeException
s
]
toJSON (InboundGovernor.TrResponderErrored ConnectionId addr
connId MiniProtocolNum
m SomeException
s) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ResponderErrored"
, Key
"connectionId" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ConnectionId addr -> Value
forall a. ToJSON a => a -> Value
toJSON ConnectionId addr
connId
, Key
"miniProtocolNum" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= MiniProtocolNum -> Value
forall a. ToJSON a => a -> Value
toJSON MiniProtocolNum
m
, Key
"reason" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SomeException -> String
forall a. Show a => a -> String
show SomeException
s
]
toJSON (InboundGovernor.TrResponderStarted ConnectionId addr
connId MiniProtocolNum
m) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ResponderStarted"
, Key
"connectionId" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ConnectionId addr -> Value
forall a. ToJSON a => a -> Value
toJSON ConnectionId addr
connId
, Key
"miniProtocolNum" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= MiniProtocolNum -> Value
forall a. ToJSON a => a -> Value
toJSON MiniProtocolNum
m
]
toJSON (InboundGovernor.TrResponderTerminated ConnectionId addr
connId MiniProtocolNum
m) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ResponderTerminated"
, Key
"connectionId" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ConnectionId addr -> Value
forall a. ToJSON a => a -> Value
toJSON ConnectionId addr
connId
, Key
"miniProtocolNum" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= MiniProtocolNum -> Value
forall a. ToJSON a => a -> Value
toJSON MiniProtocolNum
m
]
toJSON (InboundGovernor.TrPromotedToWarmRemote ConnectionId addr
connId OperationResult AbstractState
opRes) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PromotedToWarmRemote"
, Key
"connectionId" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ConnectionId addr -> Value
forall a. ToJSON a => a -> Value
toJSON ConnectionId addr
connId
, Key
"result" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= OperationResult AbstractState -> Value
forall a. ToJSON a => a -> Value
toJSON OperationResult AbstractState
opRes
]
toJSON (InboundGovernor.TrPromotedToHotRemote ConnectionId addr
connId) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PromotedToHotRemote"
, Key
"connectionId" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ConnectionId addr -> Value
forall a. ToJSON a => a -> Value
toJSON ConnectionId addr
connId
]
toJSON (InboundGovernor.TrDemotedToColdRemote ConnectionId addr
connId OperationResult DemotedToColdRemoteTr
od) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"DemotedToColdRemote"
, Key
"connectionId" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ConnectionId addr -> Value
forall a. ToJSON a => a -> Value
toJSON ConnectionId addr
connId
, Key
"result" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= OperationResult DemotedToColdRemoteTr -> String
forall a. Show a => a -> String
show OperationResult DemotedToColdRemoteTr
od
]
toJSON (InboundGovernor.TrDemotedToWarmRemote ConnectionId addr
connId) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"DemotedToWarmRemote"
, Key
"connectionId" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ConnectionId addr -> Value
forall a. ToJSON a => a -> Value
toJSON ConnectionId addr
connId
]
toJSON (InboundGovernor.TrWaitIdleRemote ConnectionId addr
connId OperationResult AbstractState
opRes) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"WaitIdleRemote"
, Key
"connectionId" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ConnectionId addr -> Value
forall a. ToJSON a => a -> Value
toJSON ConnectionId addr
connId
, Key
"result" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= OperationResult AbstractState -> Value
forall a. ToJSON a => a -> Value
toJSON OperationResult AbstractState
opRes
]
toJSON (InboundGovernor.TrMuxCleanExit ConnectionId addr
connId) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MuxCleanExit"
, Key
"connectionId" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ConnectionId addr -> Value
forall a. ToJSON a => a -> Value
toJSON ConnectionId addr
connId
]
toJSON (InboundGovernor.TrMuxErrored ConnectionId addr
connId SomeException
s) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MuxErrored"
, Key
"connectionId" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ConnectionId addr -> Value
forall a. ToJSON a => a -> Value
toJSON ConnectionId addr
connId
, Key
"reason" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SomeException -> String
forall a. Show a => a -> String
show SomeException
s
]
toJSON (InboundGovernor.TrInboundGovernorCounters Counters
counters) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"InboundGovernorCounters"
, Key
"idlePeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Counters -> Int
InboundGovernor.idlePeersRemote Counters
counters
, Key
"coldPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Counters -> Int
InboundGovernor.coldPeersRemote Counters
counters
, Key
"warmPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Counters -> Int
InboundGovernor.warmPeersRemote Counters
counters
, Key
"hotPeers" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Counters -> Int
InboundGovernor.hotPeersRemote Counters
counters
]
toJSON (InboundGovernor.TrRemoteState Map (ConnectionId addr) RemoteSt
st) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"RemoteState"
, Key
"remoteSt" Key -> Map (ConnectionId addr) RemoteSt -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Map (ConnectionId addr) RemoteSt
st
]
toJSON (InboundGovernor.TrUnexpectedlyFalseAssertion IGAssertionLocation addr
info) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"UnexpectedlyFalseAssertion"
, Key
"remoteSt" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text)
-> (IGAssertionLocation addr -> String)
-> IGAssertionLocation addr
-> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. IGAssertionLocation addr -> String
forall a. Show a => a -> String
show (IGAssertionLocation addr -> Text)
-> IGAssertionLocation addr -> Text
forall a b. (a -> b) -> a -> b
$ IGAssertionLocation addr
info)
]
toJSON (InboundGovernor.TrInboundGovernorError SomeException
err) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"InboundGovernorError"
, Key
"remoteSt" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text)
-> (SomeException -> String) -> SomeException -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SomeException -> String
forall a. Show a => a -> String
show (SomeException -> Text) -> SomeException -> Text
forall a b. (a -> b) -> a -> b
$ SomeException
err)
]
toJSON (InboundGovernor.TrMaturedConnections Set addr
matured Set addr
fresh) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MaturedConnections"
, Key
"matured" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Set addr -> Value
forall a. ToJSON a => a -> Value
toJSON Set addr
matured
, Key
"fresh" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Set addr -> Value
forall a. ToJSON a => a -> Value
toJSON Set addr
fresh
]
toJSON (InboundGovernor.TrInactive [(addr, Time)]
fresh) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"Inactive"
, Key
"fresh" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [(addr, Time)] -> Value
forall a. ToJSON a => a -> Value
toJSON [(addr, Time)]
fresh
]
instance ToJSON addr
=> ToJSON (Server.RemoteTransitionTrace addr) where
toJSON :: RemoteTransitionTrace addr -> Value
toJSON (ConnMgr.TransitionTrace addr
addr Transition' (Maybe RemoteSt)
tr) =
[Pair] -> Value
object [ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"InboundGovernorTransition"
, Key
"address" Key -> addr -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= addr
addr
, Key
"from" Key -> Maybe RemoteSt -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Transition' (Maybe RemoteSt) -> Maybe RemoteSt
forall state. Transition' state -> state
ConnMgr.fromState Transition' (Maybe RemoteSt)
tr
, Key
"to" Key -> Maybe RemoteSt -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Transition' (Maybe RemoteSt) -> Maybe RemoteSt
forall state. Transition' state -> state
ConnMgr.toState Transition' (Maybe RemoteSt)
tr
]
instance ToJSON DNSTrace where
toJSON :: DNSTrace -> Value
toJSON (DNSLookupResult DNSPeersKind
peerKind Domain
domain Maybe Domain
Nothing [(IP, PortNumber, Word32)]
results) =
[Pair] -> Value
object [ Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"DNSLookupResult"
, Key
"peer" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DNSPeersKind -> String
forall a. Show a => a -> String
show DNSPeersKind
peerKind
, Key
"domain" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (OnDecodeError -> Domain -> Text
Text.decodeUtf8With OnDecodeError
forall a b. OnError a b
Text.ignore Domain
domain)
, Key
"results" Key -> [(String, PortNumber, Word32)] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (\(IP
ip, PortNumber
port, Word32
ttl) -> (IP -> String
forall a. Show a => a -> String
show IP
ip, PortNumber
port, Word32
ttl))
((IP, PortNumber, Word32) -> (String, PortNumber, Word32))
-> [(IP, PortNumber, Word32)] -> [(String, PortNumber, Word32)]
forall a b. (a -> b) -> [a] -> [b]
`map` [(IP, PortNumber, Word32)]
results
]
toJSON (DNSLookupResult DNSPeersKind
peerKind Domain
domain (Just Domain
srvDomain) [(IP, PortNumber, Word32)]
results) =
[Pair] -> Value
object [ Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"DNSLookupResult"
, Key
"peer" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DNSPeersKind -> String
forall a. Show a => a -> String
show DNSPeersKind
peerKind
, Key
"domain" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (OnDecodeError -> Domain -> Text
Text.decodeUtf8With OnDecodeError
forall a b. OnError a b
Text.ignore Domain
domain)
, Key
"srvDomain" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (OnDecodeError -> Domain -> Text
Text.decodeUtf8With OnDecodeError
forall a b. OnError a b
Text.ignore Domain
srvDomain)
, Key
"results" Key -> [(String, PortNumber, Word32)] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (\(IP
ip, PortNumber
port, Word32
ttl) -> (IP -> String
forall a. Show a => a -> String
show IP
ip, PortNumber
port, Word32
ttl))
((IP, PortNumber, Word32) -> (String, PortNumber, Word32))
-> [(IP, PortNumber, Word32)] -> [(String, PortNumber, Word32)]
forall a b. (a -> b) -> [a] -> [b]
`map` [(IP, PortNumber, Word32)]
results
]
toJSON (DNSLookupError DNSPeersKind
peerKind Maybe DNSLookupType
Nothing Domain
domain DNSError
err) =
[Pair] -> Value
object [ Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"DNSLookupError"
, Key
"peer" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DNSPeersKind -> String
forall a. Show a => a -> String
show DNSPeersKind
peerKind
, Key
"domain" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (OnDecodeError -> Domain -> Text
Text.decodeUtf8With OnDecodeError
forall a b. OnError a b
Text.ignore Domain
domain)
, Key
"error" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DNSError -> String
forall e. Exception e => e -> String
displayException DNSError
err
]
toJSON (DNSLookupError DNSPeersKind
peerKind (Just DNSLookupType
lookupType) Domain
domain DNSError
err) =
[Pair] -> Value
object [ Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"DNSLookupError"
, Key
"lookupType" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DNSLookupType -> String
forall a. Show a => a -> String
show DNSLookupType
lookupType
, Key
"peer" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DNSPeersKind -> String
forall a. Show a => a -> String
show DNSPeersKind
peerKind
, Key
"domain" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (OnDecodeError -> Domain -> Text
Text.decodeUtf8With OnDecodeError
forall a b. OnError a b
Text.ignore Domain
domain)
, Key
"error" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DNSError -> String
forall e. Exception e => e -> String
displayException DNSError
err
]
toJSON (SRVLookupResult DNSPeersKind
peerKind Domain
domain [(Domain, Word16, Word16, Word16, Word32)]
results) =
[Pair] -> Value
object [ Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"SRVLookupResult"
, Key
"peer" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DNSPeersKind -> String
forall a. Show a => a -> String
show DNSPeersKind
peerKind
, Key
"domain" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (OnDecodeError -> Domain -> Text
Text.decodeUtf8With OnDecodeError
forall a b. OnError a b
Text.ignore Domain
domain)
, Key
"results" Key -> [(String, Word16, Word16, Word16, Word32)] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (\(Domain
domain', Word16
a, Word16
b, Word16
c, Word32
d) -> (Domain -> String
forall a. Show a => a -> String
show Domain
domain', Word16
a, Word16
b, Word16
c, Word32
d))
((Domain, Word16, Word16, Word16, Word32)
-> (String, Word16, Word16, Word16, Word32))
-> [(Domain, Word16, Word16, Word16, Word32)]
-> [(String, Word16, Word16, Word16, Word32)]
forall a b. (a -> b) -> [a] -> [b]
`map` [(Domain, Word16, Word16, Word16, Word32)]
results
]
toJSON (SRVLookupError DNSPeersKind
peerKind Domain
domain) =
[Pair] -> Value
object [ Key
"type" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"SRVLookupError"
, Key
"peer" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DNSPeersKind -> String
forall a. Show a => a -> String
show DNSPeersKind
peerKind
, Key
"domain" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (OnDecodeError -> Domain -> Text
Text.decodeUtf8With OnDecodeError
forall a b. OnError a b
Text.ignore Domain
domain)
]
instance (Show txid, Show tx)
=> ToJSON (AnyMessage (TxSubmission2 txid tx)) where
toJSON :: AnyMessage (TxSubmission2 txid tx) -> Value
toJSON (AnyMessageAndAgency StateToken st
stok Message (TxSubmission2 txid tx) st st'
R:MessageTxSubmission2fromto txid tx st st'
Tx.MsgInit) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgInit"
, Key
"agency" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$ SingTxSubmission 'StInit -> String
forall a. Show a => a -> String
show SingTxSubmission 'StInit
StateToken st
stok)
]
toJSON (AnyMessageAndAgency StateToken st
stok (Tx.MsgRequestTxs [txid]
txids)) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgRequestTxs"
, Key
"agency" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$ SingTxSubmission 'StIdle -> String
forall a. Show a => a -> String
show SingTxSubmission 'StIdle
StateToken st
stok)
, Key
"txIds" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$ [txid] -> String
forall a. Show a => a -> String
show [txid]
txids)
]
toJSON (AnyMessageAndAgency StateToken st
stok (Tx.MsgReplyTxs [tx]
txs)) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgReplyTxs"
, Key
"agency" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$ SingTxSubmission 'StTxs -> String
forall a. Show a => a -> String
show SingTxSubmission 'StTxs
StateToken st
stok)
, Key
"txs" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$ [tx] -> String
forall a. Show a => a -> String
show [tx]
txs)
]
toJSON (AnyMessageAndAgency StateToken st
stok Tx.MsgRequestTxIds{}) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgRequestTxIds"
, Key
"agency" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$ SingTxSubmission 'StIdle -> String
forall a. Show a => a -> String
show SingTxSubmission 'StIdle
StateToken st
stok)
]
toJSON (AnyMessageAndAgency StateToken st
stok (Tx.MsgReplyTxIds BlockingReplyList blocking (txid, SizeInBytes)
_)) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgReplyTxIds"
, Key
"agency" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$ SingTxSubmission ('StTxIds blocking) -> String
forall a. Show a => a -> String
show SingTxSubmission ('StTxIds blocking)
StateToken st
stok)
]
toJSON (AnyMessageAndAgency StateToken st
stok Message (TxSubmission2 txid tx) st st'
R:MessageTxSubmission2fromto txid tx st st'
Tx.MsgDone) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgDone"
, Key
"agency" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$ SingTxSubmission ('StTxIds 'StBlocking) -> String
forall a. Show a => a -> String
show SingTxSubmission ('StTxIds 'StBlocking)
StateToken st
stok)
]
instance ToJSON (AnyMessage KeepAlive) where
toJSON :: AnyMessage KeepAlive -> Value
toJSON (AnyMessageAndAgency StateToken st
stok KeepAlive.MsgKeepAlive {}) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgKeepAlive"
, Key
"agency" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$ SingKeepAlive 'StClient -> String
forall a. Show a => a -> String
show SingKeepAlive 'StClient
StateToken st
stok)
]
toJSON (AnyMessageAndAgency StateToken st
stok KeepAlive.MsgKeepAliveResponse {}) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgKeepAliveResponse"
, Key
"agency" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$ SingKeepAlive 'StServer -> String
forall a. Show a => a -> String
show SingKeepAlive 'StServer
StateToken st
stok)
]
toJSON (AnyMessageAndAgency StateToken st
stok Message KeepAlive st st'
R:MessageKeepAlivefromto st st'
KeepAlive.MsgDone) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgDone"
, Key
"agency" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$ SingKeepAlive 'StClient -> String
forall a. Show a => a -> String
show SingKeepAlive 'StClient
StateToken st
stok)
]
instance ToJSON peerAddr => ToJSON (AnyMessage (PeerSharing.PeerSharing peerAddr)) where
toJSON :: AnyMessage (PeerSharing peerAddr) -> Value
toJSON (AnyMessageAndAgency StateToken st
stok (PeerSharing.MsgShareRequest PeerSharingAmount
num)) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgShareRequest"
, Key
"agency" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$ SingPeerSharing 'StIdle -> String
forall a. Show a => a -> String
show SingPeerSharing 'StIdle
StateToken st
stok)
, Key
"amount" Key -> Word8 -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= PeerSharingAmount -> Word8
PeerSharing.getAmount PeerSharingAmount
num
]
toJSON (AnyMessageAndAgency StateToken st
stok (PeerSharing.MsgSharePeers [peerAddr]
peers)) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgSharePeers"
, Key
"agency" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$ SingPeerSharing 'StBusy -> String
forall a. Show a => a -> String
show SingPeerSharing 'StBusy
StateToken st
stok)
, Key
"peers" Key -> [peerAddr] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [peerAddr]
peers
]
toJSON (AnyMessageAndAgency StateToken st
stok Message (PeerSharing peerAddr) st st'
R:MessagePeerSharingfromto peerAddr st st'
PeerSharing.MsgDone) =
[Pair] -> Value
object
[ Key
"kind" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MsgDone"
, Key
"agency" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String (String -> Text
pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$ SingPeerSharing 'StIdle -> String
forall a. Show a => a -> String
show SingPeerSharing 'StIdle
StateToken st
stok)
]