{-| Module : Network.Nakadi.Internal.Types.Config Description : Nakadi Client Configuration Types (Internal) Copyright : (c) Moritz Clasmeier 2017, 2018 License : BSD3 Maintainer : mtesseract@silverratio.net Stability : experimental Portability : POSIX Internal configuration specific types. -} {-# LANGUAGE GADTs #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE StrictData #-} module Network.Nakadi.Internal.Types.Config where import Conduit import Control.Retry import qualified Data.ByteString.Lazy as LB import Network.HTTP.Client import Network.Nakadi.Internal.Prelude import Network.Nakadi.Internal.Types.Logger import Network.Nakadi.Internal.Types.Service import Network.Nakadi.Internal.Types.Subscriptions -- | Config type StreamConnectCallback m = Response () -> m () -- | Type synonym for user-provided callbacks which are used for HTTP -- Errror propagation. type HttpErrorCallback m = Request -> HttpException -> RetryStatus -> Bool -> m () type ConfigIO = Config IO data Config m = Config { _requestTemplate :: Request , _requestModifier :: Request -> m Request , _manager :: Maybe Manager , _deserializationFailureCallback :: Maybe (ByteString -> Text -> m ()) , _streamConnectCallback :: Maybe (StreamConnectCallback m) , _logFunc :: Maybe (LogFunc m) , _retryPolicy :: RetryPolicyM IO , _http :: HttpBackend m , _httpErrorCallback :: Maybe (HttpErrorCallback m) , _flowId :: Maybe FlowId , _commitStrategy :: CommitStrategy , _commitTimeout :: Maybe CommitTimeout , _subscriptionStats :: Maybe SubscriptionStatsConf , _maxUncommittedEvents :: Maybe Int32 , _batchLimit :: Maybe Int32 , _streamLimit :: Maybe Int32 , _batchFlushTimeout :: Maybe Int32 , _streamTimeout :: Maybe Int32 , _streamKeepAliveLimit :: Maybe Int32 , _worker :: WorkerConfig } data HttpBackend b = HttpBackend { _httpLbs :: Config b -> Request -> Maybe Manager -> b (Response LB.ByteString) , _httpResponseOpen :: Config b -> Request -> Maybe Manager -> b (Response (ConduitM () ByteString b ())) , _httpResponseClose :: Response () -> b () } data WorkerConfig = WorkerConfig { _nThreads :: Int } data SubscriptionStatsConf = SubscriptionStatsConf { _showTimeLag :: Bool }