{-# 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.MediaConnect.Types.Flow
-- 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.MediaConnect.Types.Flow where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.MediaConnect.Types.Entitlement
import Amazonka.MediaConnect.Types.FailoverConfig
import Amazonka.MediaConnect.Types.Maintenance
import Amazonka.MediaConnect.Types.MediaStream
import Amazonka.MediaConnect.Types.Output
import Amazonka.MediaConnect.Types.Source
import Amazonka.MediaConnect.Types.Status
import Amazonka.MediaConnect.Types.VpcInterface
import qualified Amazonka.Prelude as Prelude

-- | The settings for a flow, including its source, outputs, and
-- entitlements.
--
-- /See:/ 'newFlow' smart constructor.
data Flow = Flow'
  { -- | A description of the flow. This value is not used or seen outside of the
    -- current AWS Elemental MediaConnect account.
    Flow -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The IP address from which video will be sent to output destinations.
    Flow -> Maybe Text
egressIp :: Prelude.Maybe Prelude.Text,
    Flow -> Maybe Maintenance
maintenance :: Prelude.Maybe Maintenance,
    -- | The media streams that are associated with the flow. After you associate
    -- a media stream with a source, you can also associate it with outputs on
    -- the flow.
    Flow -> Maybe [MediaStream]
mediaStreams :: Prelude.Maybe [MediaStream],
    Flow -> Maybe FailoverConfig
sourceFailoverConfig :: Prelude.Maybe FailoverConfig,
    Flow -> Maybe [Source]
sources :: Prelude.Maybe [Source],
    -- | The VPC Interfaces for this flow.
    Flow -> Maybe [VpcInterface]
vpcInterfaces :: Prelude.Maybe [VpcInterface],
    -- | The current status of the flow.
    Flow -> Status
status :: Status,
    -- | The entitlements in this flow.
    Flow -> [Entitlement]
entitlements :: [Entitlement],
    -- | The outputs in this flow.
    Flow -> [Output]
outputs :: [Output],
    -- | The Availability Zone that you want to create the flow in. These options
    -- are limited to the Availability Zones within the current AWS.
    Flow -> Text
availabilityZone :: Prelude.Text,
    -- | The Amazon Resource Name (ARN), a unique identifier for any AWS
    -- resource, of the flow.
    Flow -> Text
flowArn :: Prelude.Text,
    Flow -> Source
source :: Source,
    -- | The name of the flow.
    Flow -> Text
name :: Prelude.Text
  }
  deriving (Flow -> Flow -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Flow -> Flow -> Bool
$c/= :: Flow -> Flow -> Bool
== :: Flow -> Flow -> Bool
$c== :: Flow -> Flow -> Bool
Prelude.Eq, ReadPrec [Flow]
ReadPrec Flow
Int -> ReadS Flow
ReadS [Flow]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Flow]
$creadListPrec :: ReadPrec [Flow]
readPrec :: ReadPrec Flow
$creadPrec :: ReadPrec Flow
readList :: ReadS [Flow]
$creadList :: ReadS [Flow]
readsPrec :: Int -> ReadS Flow
$creadsPrec :: Int -> ReadS Flow
Prelude.Read, Int -> Flow -> ShowS
[Flow] -> ShowS
Flow -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Flow] -> ShowS
$cshowList :: [Flow] -> ShowS
show :: Flow -> String
$cshow :: Flow -> String
showsPrec :: Int -> Flow -> ShowS
$cshowsPrec :: Int -> Flow -> ShowS
Prelude.Show, forall x. Rep Flow x -> Flow
forall x. Flow -> Rep Flow x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Flow x -> Flow
$cfrom :: forall x. Flow -> Rep Flow x
Prelude.Generic)

-- |
-- Create a value of 'Flow' 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:
--
-- 'description', 'flow_description' - A description of the flow. This value is not used or seen outside of the
-- current AWS Elemental MediaConnect account.
--
-- 'egressIp', 'flow_egressIp' - The IP address from which video will be sent to output destinations.
--
-- 'maintenance', 'flow_maintenance' - Undocumented member.
--
-- 'mediaStreams', 'flow_mediaStreams' - The media streams that are associated with the flow. After you associate
-- a media stream with a source, you can also associate it with outputs on
-- the flow.
--
-- 'sourceFailoverConfig', 'flow_sourceFailoverConfig' - Undocumented member.
--
-- 'sources', 'flow_sources' - Undocumented member.
--
-- 'vpcInterfaces', 'flow_vpcInterfaces' - The VPC Interfaces for this flow.
--
-- 'status', 'flow_status' - The current status of the flow.
--
-- 'entitlements', 'flow_entitlements' - The entitlements in this flow.
--
-- 'outputs', 'flow_outputs' - The outputs in this flow.
--
-- 'availabilityZone', 'flow_availabilityZone' - The Availability Zone that you want to create the flow in. These options
-- are limited to the Availability Zones within the current AWS.
--
-- 'flowArn', 'flow_flowArn' - The Amazon Resource Name (ARN), a unique identifier for any AWS
-- resource, of the flow.
--
-- 'source', 'flow_source' - Undocumented member.
--
-- 'name', 'flow_name' - The name of the flow.
newFlow ::
  -- | 'status'
  Status ->
  -- | 'availabilityZone'
  Prelude.Text ->
  -- | 'flowArn'
  Prelude.Text ->
  -- | 'source'
  Source ->
  -- | 'name'
  Prelude.Text ->
  Flow
newFlow :: Status -> Text -> Text -> Source -> Text -> Flow
newFlow
  Status
pStatus_
  Text
pAvailabilityZone_
  Text
pFlowArn_
  Source
pSource_
  Text
pName_ =
    Flow'
      { $sel:description:Flow' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
        $sel:egressIp:Flow' :: Maybe Text
egressIp = forall a. Maybe a
Prelude.Nothing,
        $sel:maintenance:Flow' :: Maybe Maintenance
maintenance = forall a. Maybe a
Prelude.Nothing,
        $sel:mediaStreams:Flow' :: Maybe [MediaStream]
mediaStreams = forall a. Maybe a
Prelude.Nothing,
        $sel:sourceFailoverConfig:Flow' :: Maybe FailoverConfig
sourceFailoverConfig = forall a. Maybe a
Prelude.Nothing,
        $sel:sources:Flow' :: Maybe [Source]
sources = forall a. Maybe a
Prelude.Nothing,
        $sel:vpcInterfaces:Flow' :: Maybe [VpcInterface]
vpcInterfaces = forall a. Maybe a
Prelude.Nothing,
        $sel:status:Flow' :: Status
status = Status
pStatus_,
        $sel:entitlements:Flow' :: [Entitlement]
entitlements = forall a. Monoid a => a
Prelude.mempty,
        $sel:outputs:Flow' :: [Output]
outputs = forall a. Monoid a => a
Prelude.mempty,
        $sel:availabilityZone:Flow' :: Text
availabilityZone = Text
pAvailabilityZone_,
        $sel:flowArn:Flow' :: Text
flowArn = Text
pFlowArn_,
        $sel:source:Flow' :: Source
source = Source
pSource_,
        $sel:name:Flow' :: Text
name = Text
pName_
      }

-- | A description of the flow. This value is not used or seen outside of the
-- current AWS Elemental MediaConnect account.
flow_description :: Lens.Lens' Flow (Prelude.Maybe Prelude.Text)
flow_description :: Lens' Flow (Maybe Text)
flow_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Flow' {Maybe Text
description :: Maybe Text
$sel:description:Flow' :: Flow -> Maybe Text
description} -> Maybe Text
description) (\s :: Flow
s@Flow' {} Maybe Text
a -> Flow
s {$sel:description:Flow' :: Maybe Text
description = Maybe Text
a} :: Flow)

-- | The IP address from which video will be sent to output destinations.
flow_egressIp :: Lens.Lens' Flow (Prelude.Maybe Prelude.Text)
flow_egressIp :: Lens' Flow (Maybe Text)
flow_egressIp = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Flow' {Maybe Text
egressIp :: Maybe Text
$sel:egressIp:Flow' :: Flow -> Maybe Text
egressIp} -> Maybe Text
egressIp) (\s :: Flow
s@Flow' {} Maybe Text
a -> Flow
s {$sel:egressIp:Flow' :: Maybe Text
egressIp = Maybe Text
a} :: Flow)

-- | Undocumented member.
flow_maintenance :: Lens.Lens' Flow (Prelude.Maybe Maintenance)
flow_maintenance :: Lens' Flow (Maybe Maintenance)
flow_maintenance = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Flow' {Maybe Maintenance
maintenance :: Maybe Maintenance
$sel:maintenance:Flow' :: Flow -> Maybe Maintenance
maintenance} -> Maybe Maintenance
maintenance) (\s :: Flow
s@Flow' {} Maybe Maintenance
a -> Flow
s {$sel:maintenance:Flow' :: Maybe Maintenance
maintenance = Maybe Maintenance
a} :: Flow)

-- | The media streams that are associated with the flow. After you associate
-- a media stream with a source, you can also associate it with outputs on
-- the flow.
flow_mediaStreams :: Lens.Lens' Flow (Prelude.Maybe [MediaStream])
flow_mediaStreams :: Lens' Flow (Maybe [MediaStream])
flow_mediaStreams = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Flow' {Maybe [MediaStream]
mediaStreams :: Maybe [MediaStream]
$sel:mediaStreams:Flow' :: Flow -> Maybe [MediaStream]
mediaStreams} -> Maybe [MediaStream]
mediaStreams) (\s :: Flow
s@Flow' {} Maybe [MediaStream]
a -> Flow
s {$sel:mediaStreams:Flow' :: Maybe [MediaStream]
mediaStreams = Maybe [MediaStream]
a} :: Flow) 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

-- | Undocumented member.
flow_sourceFailoverConfig :: Lens.Lens' Flow (Prelude.Maybe FailoverConfig)
flow_sourceFailoverConfig :: Lens' Flow (Maybe FailoverConfig)
flow_sourceFailoverConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Flow' {Maybe FailoverConfig
sourceFailoverConfig :: Maybe FailoverConfig
$sel:sourceFailoverConfig:Flow' :: Flow -> Maybe FailoverConfig
sourceFailoverConfig} -> Maybe FailoverConfig
sourceFailoverConfig) (\s :: Flow
s@Flow' {} Maybe FailoverConfig
a -> Flow
s {$sel:sourceFailoverConfig:Flow' :: Maybe FailoverConfig
sourceFailoverConfig = Maybe FailoverConfig
a} :: Flow)

-- | Undocumented member.
flow_sources :: Lens.Lens' Flow (Prelude.Maybe [Source])
flow_sources :: Lens' Flow (Maybe [Source])
flow_sources = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Flow' {Maybe [Source]
sources :: Maybe [Source]
$sel:sources:Flow' :: Flow -> Maybe [Source]
sources} -> Maybe [Source]
sources) (\s :: Flow
s@Flow' {} Maybe [Source]
a -> Flow
s {$sel:sources:Flow' :: Maybe [Source]
sources = Maybe [Source]
a} :: Flow) 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 VPC Interfaces for this flow.
flow_vpcInterfaces :: Lens.Lens' Flow (Prelude.Maybe [VpcInterface])
flow_vpcInterfaces :: Lens' Flow (Maybe [VpcInterface])
flow_vpcInterfaces = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Flow' {Maybe [VpcInterface]
vpcInterfaces :: Maybe [VpcInterface]
$sel:vpcInterfaces:Flow' :: Flow -> Maybe [VpcInterface]
vpcInterfaces} -> Maybe [VpcInterface]
vpcInterfaces) (\s :: Flow
s@Flow' {} Maybe [VpcInterface]
a -> Flow
s {$sel:vpcInterfaces:Flow' :: Maybe [VpcInterface]
vpcInterfaces = Maybe [VpcInterface]
a} :: Flow) 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 current status of the flow.
flow_status :: Lens.Lens' Flow Status
flow_status :: Lens' Flow Status
flow_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Flow' {Status
status :: Status
$sel:status:Flow' :: Flow -> Status
status} -> Status
status) (\s :: Flow
s@Flow' {} Status
a -> Flow
s {$sel:status:Flow' :: Status
status = Status
a} :: Flow)

-- | The entitlements in this flow.
flow_entitlements :: Lens.Lens' Flow [Entitlement]
flow_entitlements :: Lens' Flow [Entitlement]
flow_entitlements = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Flow' {[Entitlement]
entitlements :: [Entitlement]
$sel:entitlements:Flow' :: Flow -> [Entitlement]
entitlements} -> [Entitlement]
entitlements) (\s :: Flow
s@Flow' {} [Entitlement]
a -> Flow
s {$sel:entitlements:Flow' :: [Entitlement]
entitlements = [Entitlement]
a} :: Flow) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The outputs in this flow.
flow_outputs :: Lens.Lens' Flow [Output]
flow_outputs :: Lens' Flow [Output]
flow_outputs = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Flow' {[Output]
outputs :: [Output]
$sel:outputs:Flow' :: Flow -> [Output]
outputs} -> [Output]
outputs) (\s :: Flow
s@Flow' {} [Output]
a -> Flow
s {$sel:outputs:Flow' :: [Output]
outputs = [Output]
a} :: Flow) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The Availability Zone that you want to create the flow in. These options
-- are limited to the Availability Zones within the current AWS.
flow_availabilityZone :: Lens.Lens' Flow Prelude.Text
flow_availabilityZone :: Lens' Flow Text
flow_availabilityZone = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Flow' {Text
availabilityZone :: Text
$sel:availabilityZone:Flow' :: Flow -> Text
availabilityZone} -> Text
availabilityZone) (\s :: Flow
s@Flow' {} Text
a -> Flow
s {$sel:availabilityZone:Flow' :: Text
availabilityZone = Text
a} :: Flow)

-- | The Amazon Resource Name (ARN), a unique identifier for any AWS
-- resource, of the flow.
flow_flowArn :: Lens.Lens' Flow Prelude.Text
flow_flowArn :: Lens' Flow Text
flow_flowArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Flow' {Text
flowArn :: Text
$sel:flowArn:Flow' :: Flow -> Text
flowArn} -> Text
flowArn) (\s :: Flow
s@Flow' {} Text
a -> Flow
s {$sel:flowArn:Flow' :: Text
flowArn = Text
a} :: Flow)

-- | Undocumented member.
flow_source :: Lens.Lens' Flow Source
flow_source :: Lens' Flow Source
flow_source = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Flow' {Source
source :: Source
$sel:source:Flow' :: Flow -> Source
source} -> Source
source) (\s :: Flow
s@Flow' {} Source
a -> Flow
s {$sel:source:Flow' :: Source
source = Source
a} :: Flow)

-- | The name of the flow.
flow_name :: Lens.Lens' Flow Prelude.Text
flow_name :: Lens' Flow Text
flow_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Flow' {Text
name :: Text
$sel:name:Flow' :: Flow -> Text
name} -> Text
name) (\s :: Flow
s@Flow' {} Text
a -> Flow
s {$sel:name:Flow' :: Text
name = Text
a} :: Flow)

instance Data.FromJSON Flow where
  parseJSON :: Value -> Parser Flow
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"Flow"
      ( \Object
x ->
          Maybe Text
-> Maybe Text
-> Maybe Maintenance
-> Maybe [MediaStream]
-> Maybe FailoverConfig
-> Maybe [Source]
-> Maybe [VpcInterface]
-> Status
-> [Entitlement]
-> [Output]
-> Text
-> Text
-> Source
-> Text
-> Flow
Flow'
            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
"description")
            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
"egressIp")
            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
"maintenance")
            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
"mediaStreams" 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
"sourceFailoverConfig")
            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
"sources" 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
"vpcInterfaces" 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 a
Data..: Key
"status")
            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
"entitlements" 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
"outputs" 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 a
Data..: Key
"availabilityZone")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"flowArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"source")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"name")
      )

instance Prelude.Hashable Flow where
  hashWithSalt :: Int -> Flow -> Int
hashWithSalt Int
_salt Flow' {[Entitlement]
[Output]
Maybe [MediaStream]
Maybe [Source]
Maybe [VpcInterface]
Maybe Text
Maybe Maintenance
Maybe FailoverConfig
Text
Status
Source
name :: Text
source :: Source
flowArn :: Text
availabilityZone :: Text
outputs :: [Output]
entitlements :: [Entitlement]
status :: Status
vpcInterfaces :: Maybe [VpcInterface]
sources :: Maybe [Source]
sourceFailoverConfig :: Maybe FailoverConfig
mediaStreams :: Maybe [MediaStream]
maintenance :: Maybe Maintenance
egressIp :: Maybe Text
description :: Maybe Text
$sel:name:Flow' :: Flow -> Text
$sel:source:Flow' :: Flow -> Source
$sel:flowArn:Flow' :: Flow -> Text
$sel:availabilityZone:Flow' :: Flow -> Text
$sel:outputs:Flow' :: Flow -> [Output]
$sel:entitlements:Flow' :: Flow -> [Entitlement]
$sel:status:Flow' :: Flow -> Status
$sel:vpcInterfaces:Flow' :: Flow -> Maybe [VpcInterface]
$sel:sources:Flow' :: Flow -> Maybe [Source]
$sel:sourceFailoverConfig:Flow' :: Flow -> Maybe FailoverConfig
$sel:mediaStreams:Flow' :: Flow -> Maybe [MediaStream]
$sel:maintenance:Flow' :: Flow -> Maybe Maintenance
$sel:egressIp:Flow' :: Flow -> Maybe Text
$sel:description:Flow' :: Flow -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
egressIp
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Maintenance
maintenance
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [MediaStream]
mediaStreams
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe FailoverConfig
sourceFailoverConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Source]
sources
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [VpcInterface]
vpcInterfaces
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Status
status
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` [Entitlement]
entitlements
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` [Output]
outputs
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
availabilityZone
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
flowArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Source
source
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name

instance Prelude.NFData Flow where
  rnf :: Flow -> ()
rnf Flow' {[Entitlement]
[Output]
Maybe [MediaStream]
Maybe [Source]
Maybe [VpcInterface]
Maybe Text
Maybe Maintenance
Maybe FailoverConfig
Text
Status
Source
name :: Text
source :: Source
flowArn :: Text
availabilityZone :: Text
outputs :: [Output]
entitlements :: [Entitlement]
status :: Status
vpcInterfaces :: Maybe [VpcInterface]
sources :: Maybe [Source]
sourceFailoverConfig :: Maybe FailoverConfig
mediaStreams :: Maybe [MediaStream]
maintenance :: Maybe Maintenance
egressIp :: Maybe Text
description :: Maybe Text
$sel:name:Flow' :: Flow -> Text
$sel:source:Flow' :: Flow -> Source
$sel:flowArn:Flow' :: Flow -> Text
$sel:availabilityZone:Flow' :: Flow -> Text
$sel:outputs:Flow' :: Flow -> [Output]
$sel:entitlements:Flow' :: Flow -> [Entitlement]
$sel:status:Flow' :: Flow -> Status
$sel:vpcInterfaces:Flow' :: Flow -> Maybe [VpcInterface]
$sel:sources:Flow' :: Flow -> Maybe [Source]
$sel:sourceFailoverConfig:Flow' :: Flow -> Maybe FailoverConfig
$sel:mediaStreams:Flow' :: Flow -> Maybe [MediaStream]
$sel:maintenance:Flow' :: Flow -> Maybe Maintenance
$sel:egressIp:Flow' :: Flow -> Maybe Text
$sel:description:Flow' :: Flow -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
egressIp
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Maintenance
maintenance
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [MediaStream]
mediaStreams
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe FailoverConfig
sourceFailoverConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Source]
sources
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [VpcInterface]
vpcInterfaces
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Status
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf [Entitlement]
entitlements
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf [Output]
outputs
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
availabilityZone
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
flowArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Source
source
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
name