natskell-0.0.0.1: internal/Policy/State/Types.hs
{-# LANGUAGE RankNTypes #-}
module State.Types
( TLSPublicKey
, TLSPrivateKey
, TLSCertData
, ClientConfig (..)
, ClientExitReason (..)
, ClientStatus (..)
) where
import qualified Data.ByteString as BS
import Lib.Logger.Types (LoggerConfig)
import Types.Connect (Connect)
import qualified Types.Err as Err
type TLSPublicKey = BS.ByteString
type TLSPrivateKey = BS.ByteString
type TLSCertData = (TLSPublicKey, TLSPrivateKey)
data ClientConfig = ClientConfig
{ connectionAttempts :: Int
, callbackConcurrency :: Int
, bufferLimit :: Int
, connectConfig :: Connect
, loggerConfig :: LoggerConfig
, tlsCert :: Maybe TLSCertData
, exitAction :: ClientExitReason -> IO ()
, connectOptions :: [(String, Int)]
}
data ClientExitReason = ExitClosedByUser
| ExitRetriesExhausted (Maybe String)
| ExitServerError Err.Err
| ExitResetRequested
deriving (Eq, Show)
data ClientStatus = Running
| Closing ClientExitReason
| Closed ClientExitReason
deriving (Eq, Show)