{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.XRay.Types.ServiceInfo
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.XRay.Types.ServiceInfo where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import Amazonka.XRay.Types.Edge
import Amazonka.XRay.Types.HistogramEntry
import Amazonka.XRay.Types.ServiceStatistics

-- | Information about an application that processed requests, users that
-- made requests, or downstream services, resources, and applications that
-- an application used.
--
-- /See:/ 'newServiceInfo' smart constructor.
data ServiceInfo = ServiceInfo'
  { -- | Identifier of the Amazon Web Services account in which the service runs.
    ServiceInfo -> Maybe Text
accountId :: Prelude.Maybe Prelude.Text,
    -- | A histogram that maps the spread of service durations.
    ServiceInfo -> Maybe [HistogramEntry]
durationHistogram :: Prelude.Maybe [HistogramEntry],
    -- | Connections to downstream services.
    ServiceInfo -> Maybe [Edge]
edges :: Prelude.Maybe [Edge],
    -- | The end time of the last segment that the service generated.
    ServiceInfo -> Maybe POSIX
endTime :: Prelude.Maybe Data.POSIX,
    -- | The canonical name of the service.
    ServiceInfo -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | A list of names for the service, including the canonical name.
    ServiceInfo -> Maybe [Text]
names :: Prelude.Maybe [Prelude.Text],
    -- | Identifier for the service. Unique within the service map.
    ServiceInfo -> Maybe Int
referenceId :: Prelude.Maybe Prelude.Int,
    -- | A histogram that maps the spread of service response times.
    ServiceInfo -> Maybe [HistogramEntry]
responseTimeHistogram :: Prelude.Maybe [HistogramEntry],
    -- | Indicates that the service was the first service to process a request.
    ServiceInfo -> Maybe Bool
root :: Prelude.Maybe Prelude.Bool,
    -- | The start time of the first segment that the service generated.
    ServiceInfo -> Maybe POSIX
startTime :: Prelude.Maybe Data.POSIX,
    -- | The service\'s state.
    ServiceInfo -> Maybe Text
state :: Prelude.Maybe Prelude.Text,
    -- | Aggregated statistics for the service.
    ServiceInfo -> Maybe ServiceStatistics
summaryStatistics :: Prelude.Maybe ServiceStatistics,
    -- | The type of service.
    --
    -- -   Amazon Web Services Resource - The type of an Amazon Web Services
    --     resource. For example, @AWS::EC2::Instance@ for an application
    --     running on Amazon EC2 or @AWS::DynamoDB::Table@ for an Amazon
    --     DynamoDB table that the application used.
    --
    -- -   Amazon Web Services Service - The type of an Amazon Web Services
    --     service. For example, @AWS::DynamoDB@ for downstream calls to Amazon
    --     DynamoDB that didn\'t target a specific table.
    --
    -- -   @client@ - Represents the clients that sent requests to a root
    --     service.
    --
    -- -   @remote@ - A downstream service of indeterminate type.
    ServiceInfo -> Maybe Text
type' :: Prelude.Maybe Prelude.Text
  }
  deriving (ServiceInfo -> ServiceInfo -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ServiceInfo -> ServiceInfo -> Bool
$c/= :: ServiceInfo -> ServiceInfo -> Bool
== :: ServiceInfo -> ServiceInfo -> Bool
$c== :: ServiceInfo -> ServiceInfo -> Bool
Prelude.Eq, ReadPrec [ServiceInfo]
ReadPrec ServiceInfo
Int -> ReadS ServiceInfo
ReadS [ServiceInfo]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ServiceInfo]
$creadListPrec :: ReadPrec [ServiceInfo]
readPrec :: ReadPrec ServiceInfo
$creadPrec :: ReadPrec ServiceInfo
readList :: ReadS [ServiceInfo]
$creadList :: ReadS [ServiceInfo]
readsPrec :: Int -> ReadS ServiceInfo
$creadsPrec :: Int -> ReadS ServiceInfo
Prelude.Read, Int -> ServiceInfo -> ShowS
[ServiceInfo] -> ShowS
ServiceInfo -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ServiceInfo] -> ShowS
$cshowList :: [ServiceInfo] -> ShowS
show :: ServiceInfo -> String
$cshow :: ServiceInfo -> String
showsPrec :: Int -> ServiceInfo -> ShowS
$cshowsPrec :: Int -> ServiceInfo -> ShowS
Prelude.Show, forall x. Rep ServiceInfo x -> ServiceInfo
forall x. ServiceInfo -> Rep ServiceInfo x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ServiceInfo x -> ServiceInfo
$cfrom :: forall x. ServiceInfo -> Rep ServiceInfo x
Prelude.Generic)

-- |
-- Create a value of 'ServiceInfo' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'accountId', 'serviceInfo_accountId' - Identifier of the Amazon Web Services account in which the service runs.
--
-- 'durationHistogram', 'serviceInfo_durationHistogram' - A histogram that maps the spread of service durations.
--
-- 'edges', 'serviceInfo_edges' - Connections to downstream services.
--
-- 'endTime', 'serviceInfo_endTime' - The end time of the last segment that the service generated.
--
-- 'name', 'serviceInfo_name' - The canonical name of the service.
--
-- 'names', 'serviceInfo_names' - A list of names for the service, including the canonical name.
--
-- 'referenceId', 'serviceInfo_referenceId' - Identifier for the service. Unique within the service map.
--
-- 'responseTimeHistogram', 'serviceInfo_responseTimeHistogram' - A histogram that maps the spread of service response times.
--
-- 'root', 'serviceInfo_root' - Indicates that the service was the first service to process a request.
--
-- 'startTime', 'serviceInfo_startTime' - The start time of the first segment that the service generated.
--
-- 'state', 'serviceInfo_state' - The service\'s state.
--
-- 'summaryStatistics', 'serviceInfo_summaryStatistics' - Aggregated statistics for the service.
--
-- 'type'', 'serviceInfo_type' - The type of service.
--
-- -   Amazon Web Services Resource - The type of an Amazon Web Services
--     resource. For example, @AWS::EC2::Instance@ for an application
--     running on Amazon EC2 or @AWS::DynamoDB::Table@ for an Amazon
--     DynamoDB table that the application used.
--
-- -   Amazon Web Services Service - The type of an Amazon Web Services
--     service. For example, @AWS::DynamoDB@ for downstream calls to Amazon
--     DynamoDB that didn\'t target a specific table.
--
-- -   @client@ - Represents the clients that sent requests to a root
--     service.
--
-- -   @remote@ - A downstream service of indeterminate type.
newServiceInfo ::
  ServiceInfo
newServiceInfo :: ServiceInfo
newServiceInfo =
  ServiceInfo'
    { $sel:accountId:ServiceInfo' :: Maybe Text
accountId = forall a. Maybe a
Prelude.Nothing,
      $sel:durationHistogram:ServiceInfo' :: Maybe [HistogramEntry]
durationHistogram = forall a. Maybe a
Prelude.Nothing,
      $sel:edges:ServiceInfo' :: Maybe [Edge]
edges = forall a. Maybe a
Prelude.Nothing,
      $sel:endTime:ServiceInfo' :: Maybe POSIX
endTime = forall a. Maybe a
Prelude.Nothing,
      $sel:name:ServiceInfo' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:names:ServiceInfo' :: Maybe [Text]
names = forall a. Maybe a
Prelude.Nothing,
      $sel:referenceId:ServiceInfo' :: Maybe Int
referenceId = forall a. Maybe a
Prelude.Nothing,
      $sel:responseTimeHistogram:ServiceInfo' :: Maybe [HistogramEntry]
responseTimeHistogram = forall a. Maybe a
Prelude.Nothing,
      $sel:root:ServiceInfo' :: Maybe Bool
root = forall a. Maybe a
Prelude.Nothing,
      $sel:startTime:ServiceInfo' :: Maybe POSIX
startTime = forall a. Maybe a
Prelude.Nothing,
      $sel:state:ServiceInfo' :: Maybe Text
state = forall a. Maybe a
Prelude.Nothing,
      $sel:summaryStatistics:ServiceInfo' :: Maybe ServiceStatistics
summaryStatistics = forall a. Maybe a
Prelude.Nothing,
      $sel:type':ServiceInfo' :: Maybe Text
type' = forall a. Maybe a
Prelude.Nothing
    }

-- | Identifier of the Amazon Web Services account in which the service runs.
serviceInfo_accountId :: Lens.Lens' ServiceInfo (Prelude.Maybe Prelude.Text)
serviceInfo_accountId :: Lens' ServiceInfo (Maybe Text)
serviceInfo_accountId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ServiceInfo' {Maybe Text
accountId :: Maybe Text
$sel:accountId:ServiceInfo' :: ServiceInfo -> Maybe Text
accountId} -> Maybe Text
accountId) (\s :: ServiceInfo
s@ServiceInfo' {} Maybe Text
a -> ServiceInfo
s {$sel:accountId:ServiceInfo' :: Maybe Text
accountId = Maybe Text
a} :: ServiceInfo)

-- | A histogram that maps the spread of service durations.
serviceInfo_durationHistogram :: Lens.Lens' ServiceInfo (Prelude.Maybe [HistogramEntry])
serviceInfo_durationHistogram :: Lens' ServiceInfo (Maybe [HistogramEntry])
serviceInfo_durationHistogram = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ServiceInfo' {Maybe [HistogramEntry]
durationHistogram :: Maybe [HistogramEntry]
$sel:durationHistogram:ServiceInfo' :: ServiceInfo -> Maybe [HistogramEntry]
durationHistogram} -> Maybe [HistogramEntry]
durationHistogram) (\s :: ServiceInfo
s@ServiceInfo' {} Maybe [HistogramEntry]
a -> ServiceInfo
s {$sel:durationHistogram:ServiceInfo' :: Maybe [HistogramEntry]
durationHistogram = Maybe [HistogramEntry]
a} :: ServiceInfo) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Connections to downstream services.
serviceInfo_edges :: Lens.Lens' ServiceInfo (Prelude.Maybe [Edge])
serviceInfo_edges :: Lens' ServiceInfo (Maybe [Edge])
serviceInfo_edges = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ServiceInfo' {Maybe [Edge]
edges :: Maybe [Edge]
$sel:edges:ServiceInfo' :: ServiceInfo -> Maybe [Edge]
edges} -> Maybe [Edge]
edges) (\s :: ServiceInfo
s@ServiceInfo' {} Maybe [Edge]
a -> ServiceInfo
s {$sel:edges:ServiceInfo' :: Maybe [Edge]
edges = Maybe [Edge]
a} :: ServiceInfo) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The end time of the last segment that the service generated.
serviceInfo_endTime :: Lens.Lens' ServiceInfo (Prelude.Maybe Prelude.UTCTime)
serviceInfo_endTime :: Lens' ServiceInfo (Maybe UTCTime)
serviceInfo_endTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ServiceInfo' {Maybe POSIX
endTime :: Maybe POSIX
$sel:endTime:ServiceInfo' :: ServiceInfo -> Maybe POSIX
endTime} -> Maybe POSIX
endTime) (\s :: ServiceInfo
s@ServiceInfo' {} Maybe POSIX
a -> ServiceInfo
s {$sel:endTime:ServiceInfo' :: Maybe POSIX
endTime = Maybe POSIX
a} :: ServiceInfo) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The canonical name of the service.
serviceInfo_name :: Lens.Lens' ServiceInfo (Prelude.Maybe Prelude.Text)
serviceInfo_name :: Lens' ServiceInfo (Maybe Text)
serviceInfo_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ServiceInfo' {Maybe Text
name :: Maybe Text
$sel:name:ServiceInfo' :: ServiceInfo -> Maybe Text
name} -> Maybe Text
name) (\s :: ServiceInfo
s@ServiceInfo' {} Maybe Text
a -> ServiceInfo
s {$sel:name:ServiceInfo' :: Maybe Text
name = Maybe Text
a} :: ServiceInfo)

-- | A list of names for the service, including the canonical name.
serviceInfo_names :: Lens.Lens' ServiceInfo (Prelude.Maybe [Prelude.Text])
serviceInfo_names :: Lens' ServiceInfo (Maybe [Text])
serviceInfo_names = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ServiceInfo' {Maybe [Text]
names :: Maybe [Text]
$sel:names:ServiceInfo' :: ServiceInfo -> Maybe [Text]
names} -> Maybe [Text]
names) (\s :: ServiceInfo
s@ServiceInfo' {} Maybe [Text]
a -> ServiceInfo
s {$sel:names:ServiceInfo' :: Maybe [Text]
names = Maybe [Text]
a} :: ServiceInfo) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Identifier for the service. Unique within the service map.
serviceInfo_referenceId :: Lens.Lens' ServiceInfo (Prelude.Maybe Prelude.Int)
serviceInfo_referenceId :: Lens' ServiceInfo (Maybe Int)
serviceInfo_referenceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ServiceInfo' {Maybe Int
referenceId :: Maybe Int
$sel:referenceId:ServiceInfo' :: ServiceInfo -> Maybe Int
referenceId} -> Maybe Int
referenceId) (\s :: ServiceInfo
s@ServiceInfo' {} Maybe Int
a -> ServiceInfo
s {$sel:referenceId:ServiceInfo' :: Maybe Int
referenceId = Maybe Int
a} :: ServiceInfo)

-- | A histogram that maps the spread of service response times.
serviceInfo_responseTimeHistogram :: Lens.Lens' ServiceInfo (Prelude.Maybe [HistogramEntry])
serviceInfo_responseTimeHistogram :: Lens' ServiceInfo (Maybe [HistogramEntry])
serviceInfo_responseTimeHistogram = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ServiceInfo' {Maybe [HistogramEntry]
responseTimeHistogram :: Maybe [HistogramEntry]
$sel:responseTimeHistogram:ServiceInfo' :: ServiceInfo -> Maybe [HistogramEntry]
responseTimeHistogram} -> Maybe [HistogramEntry]
responseTimeHistogram) (\s :: ServiceInfo
s@ServiceInfo' {} Maybe [HistogramEntry]
a -> ServiceInfo
s {$sel:responseTimeHistogram:ServiceInfo' :: Maybe [HistogramEntry]
responseTimeHistogram = Maybe [HistogramEntry]
a} :: ServiceInfo) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Indicates that the service was the first service to process a request.
serviceInfo_root :: Lens.Lens' ServiceInfo (Prelude.Maybe Prelude.Bool)
serviceInfo_root :: Lens' ServiceInfo (Maybe Bool)
serviceInfo_root = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ServiceInfo' {Maybe Bool
root :: Maybe Bool
$sel:root:ServiceInfo' :: ServiceInfo -> Maybe Bool
root} -> Maybe Bool
root) (\s :: ServiceInfo
s@ServiceInfo' {} Maybe Bool
a -> ServiceInfo
s {$sel:root:ServiceInfo' :: Maybe Bool
root = Maybe Bool
a} :: ServiceInfo)

-- | The start time of the first segment that the service generated.
serviceInfo_startTime :: Lens.Lens' ServiceInfo (Prelude.Maybe Prelude.UTCTime)
serviceInfo_startTime :: Lens' ServiceInfo (Maybe UTCTime)
serviceInfo_startTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ServiceInfo' {Maybe POSIX
startTime :: Maybe POSIX
$sel:startTime:ServiceInfo' :: ServiceInfo -> Maybe POSIX
startTime} -> Maybe POSIX
startTime) (\s :: ServiceInfo
s@ServiceInfo' {} Maybe POSIX
a -> ServiceInfo
s {$sel:startTime:ServiceInfo' :: Maybe POSIX
startTime = Maybe POSIX
a} :: ServiceInfo) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The service\'s state.
serviceInfo_state :: Lens.Lens' ServiceInfo (Prelude.Maybe Prelude.Text)
serviceInfo_state :: Lens' ServiceInfo (Maybe Text)
serviceInfo_state = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ServiceInfo' {Maybe Text
state :: Maybe Text
$sel:state:ServiceInfo' :: ServiceInfo -> Maybe Text
state} -> Maybe Text
state) (\s :: ServiceInfo
s@ServiceInfo' {} Maybe Text
a -> ServiceInfo
s {$sel:state:ServiceInfo' :: Maybe Text
state = Maybe Text
a} :: ServiceInfo)

-- | Aggregated statistics for the service.
serviceInfo_summaryStatistics :: Lens.Lens' ServiceInfo (Prelude.Maybe ServiceStatistics)
serviceInfo_summaryStatistics :: Lens' ServiceInfo (Maybe ServiceStatistics)
serviceInfo_summaryStatistics = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ServiceInfo' {Maybe ServiceStatistics
summaryStatistics :: Maybe ServiceStatistics
$sel:summaryStatistics:ServiceInfo' :: ServiceInfo -> Maybe ServiceStatistics
summaryStatistics} -> Maybe ServiceStatistics
summaryStatistics) (\s :: ServiceInfo
s@ServiceInfo' {} Maybe ServiceStatistics
a -> ServiceInfo
s {$sel:summaryStatistics:ServiceInfo' :: Maybe ServiceStatistics
summaryStatistics = Maybe ServiceStatistics
a} :: ServiceInfo)

-- | The type of service.
--
-- -   Amazon Web Services Resource - The type of an Amazon Web Services
--     resource. For example, @AWS::EC2::Instance@ for an application
--     running on Amazon EC2 or @AWS::DynamoDB::Table@ for an Amazon
--     DynamoDB table that the application used.
--
-- -   Amazon Web Services Service - The type of an Amazon Web Services
--     service. For example, @AWS::DynamoDB@ for downstream calls to Amazon
--     DynamoDB that didn\'t target a specific table.
--
-- -   @client@ - Represents the clients that sent requests to a root
--     service.
--
-- -   @remote@ - A downstream service of indeterminate type.
serviceInfo_type :: Lens.Lens' ServiceInfo (Prelude.Maybe Prelude.Text)
serviceInfo_type :: Lens' ServiceInfo (Maybe Text)
serviceInfo_type = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ServiceInfo' {Maybe Text
type' :: Maybe Text
$sel:type':ServiceInfo' :: ServiceInfo -> Maybe Text
type'} -> Maybe Text
type') (\s :: ServiceInfo
s@ServiceInfo' {} Maybe Text
a -> ServiceInfo
s {$sel:type':ServiceInfo' :: Maybe Text
type' = Maybe Text
a} :: ServiceInfo)

instance Data.FromJSON ServiceInfo where
  parseJSON :: Value -> Parser ServiceInfo
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"ServiceInfo"
      ( \Object
x ->
          Maybe Text
-> Maybe [HistogramEntry]
-> Maybe [Edge]
-> Maybe POSIX
-> Maybe Text
-> Maybe [Text]
-> Maybe Int
-> Maybe [HistogramEntry]
-> Maybe Bool
-> Maybe POSIX
-> Maybe Text
-> Maybe ServiceStatistics
-> Maybe Text
-> ServiceInfo
ServiceInfo'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"AccountId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DurationHistogram"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Edges" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"EndTime")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Name")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Names" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ReferenceId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ResponseTimeHistogram"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Root")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"StartTime")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"State")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"SummaryStatistics")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Type")
      )

instance Prelude.Hashable ServiceInfo where
  hashWithSalt :: Int -> ServiceInfo -> Int
hashWithSalt Int
_salt ServiceInfo' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe [HistogramEntry]
Maybe [Edge]
Maybe Text
Maybe POSIX
Maybe ServiceStatistics
type' :: Maybe Text
summaryStatistics :: Maybe ServiceStatistics
state :: Maybe Text
startTime :: Maybe POSIX
root :: Maybe Bool
responseTimeHistogram :: Maybe [HistogramEntry]
referenceId :: Maybe Int
names :: Maybe [Text]
name :: Maybe Text
endTime :: Maybe POSIX
edges :: Maybe [Edge]
durationHistogram :: Maybe [HistogramEntry]
accountId :: Maybe Text
$sel:type':ServiceInfo' :: ServiceInfo -> Maybe Text
$sel:summaryStatistics:ServiceInfo' :: ServiceInfo -> Maybe ServiceStatistics
$sel:state:ServiceInfo' :: ServiceInfo -> Maybe Text
$sel:startTime:ServiceInfo' :: ServiceInfo -> Maybe POSIX
$sel:root:ServiceInfo' :: ServiceInfo -> Maybe Bool
$sel:responseTimeHistogram:ServiceInfo' :: ServiceInfo -> Maybe [HistogramEntry]
$sel:referenceId:ServiceInfo' :: ServiceInfo -> Maybe Int
$sel:names:ServiceInfo' :: ServiceInfo -> Maybe [Text]
$sel:name:ServiceInfo' :: ServiceInfo -> Maybe Text
$sel:endTime:ServiceInfo' :: ServiceInfo -> Maybe POSIX
$sel:edges:ServiceInfo' :: ServiceInfo -> Maybe [Edge]
$sel:durationHistogram:ServiceInfo' :: ServiceInfo -> Maybe [HistogramEntry]
$sel:accountId:ServiceInfo' :: ServiceInfo -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
accountId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [HistogramEntry]
durationHistogram
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Edge]
edges
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
endTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
names
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
referenceId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [HistogramEntry]
responseTimeHistogram
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
root
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
startTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
state
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ServiceStatistics
summaryStatistics
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
type'

instance Prelude.NFData ServiceInfo where
  rnf :: ServiceInfo -> ()
rnf ServiceInfo' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe [HistogramEntry]
Maybe [Edge]
Maybe Text
Maybe POSIX
Maybe ServiceStatistics
type' :: Maybe Text
summaryStatistics :: Maybe ServiceStatistics
state :: Maybe Text
startTime :: Maybe POSIX
root :: Maybe Bool
responseTimeHistogram :: Maybe [HistogramEntry]
referenceId :: Maybe Int
names :: Maybe [Text]
name :: Maybe Text
endTime :: Maybe POSIX
edges :: Maybe [Edge]
durationHistogram :: Maybe [HistogramEntry]
accountId :: Maybe Text
$sel:type':ServiceInfo' :: ServiceInfo -> Maybe Text
$sel:summaryStatistics:ServiceInfo' :: ServiceInfo -> Maybe ServiceStatistics
$sel:state:ServiceInfo' :: ServiceInfo -> Maybe Text
$sel:startTime:ServiceInfo' :: ServiceInfo -> Maybe POSIX
$sel:root:ServiceInfo' :: ServiceInfo -> Maybe Bool
$sel:responseTimeHistogram:ServiceInfo' :: ServiceInfo -> Maybe [HistogramEntry]
$sel:referenceId:ServiceInfo' :: ServiceInfo -> Maybe Int
$sel:names:ServiceInfo' :: ServiceInfo -> Maybe [Text]
$sel:name:ServiceInfo' :: ServiceInfo -> Maybe Text
$sel:endTime:ServiceInfo' :: ServiceInfo -> Maybe POSIX
$sel:edges:ServiceInfo' :: ServiceInfo -> Maybe [Edge]
$sel:durationHistogram:ServiceInfo' :: ServiceInfo -> Maybe [HistogramEntry]
$sel:accountId:ServiceInfo' :: ServiceInfo -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
accountId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [HistogramEntry]
durationHistogram
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Edge]
edges
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
endTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
names
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
referenceId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [HistogramEntry]
responseTimeHistogram
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
root
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
startTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
state
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ServiceStatistics
summaryStatistics
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
type'