packages feed

launchdarkly-server-sdk-4.0.0: src/LaunchDarkly/Server/Client/Status.hs

module LaunchDarkly.Server.Client.Status
    ( Status (..)
    , transitionStatus
    )
where

-- | The status of the client initialization.
data Status
    = -- | The client has not yet finished connecting to LaunchDarkly.
      Uninitialized
    | -- | The client attempted to connect to LaunchDarkly and was denied.
      Unauthorized
    | -- | The client has successfuly connected to LaunchDarkly.
      Initialized
    | -- | The client is being terminated
      ShuttingDown
    deriving (Show, Eq)

transitionStatus :: Status -> Status -> Status
transitionStatus requestedStatus oldStatus =
    case requestedStatus of
        -- Only allow setting Initialized if Uninitialized
        Initialized -> if oldStatus == Uninitialized then Initialized else oldStatus
        -- Only allow setting status if not ShuttingDown
        _ -> if oldStatus == ShuttingDown then ShuttingDown else requestedStatus