content: module Haskakafka.Consumer.Internal.Types
  
  where
  
  import           Haskakafka.InternalTypes
  
  newtype ConsumerGroupId = ConsumerGroupId String deriving (Show, Eq)
  
  -- | Topic name to be consumed
  --
  -- Wildcard (regex) topics are supported by the librdkafka assignor:
  -- any topic name in the topics list that is prefixed with @^@ will
  -- be regex-matched to the full list of topics in the cluster and matching
  -- topics will be added to the subscription list.
  newtype TopicName =
      TopicName String -- ^ a simple topic name or a regex if started with @^@
      deriving (Show, Eq)
  
  -- | Comma separated broker:port string (e.g. @broker1:9092,broker2:9092@)
  newtype BrokersString = BrokersString String deriving (Show, Eq)
  
  -- | Indicates how offsets are to be synced to disk
  data OffsetStoreSync =
        OffsetSyncDisable       -- ^ Do not sync offsets (in Kafka: -1)
      | OffsetSyncImmediate     -- ^ Sync immediately after each offset commit (in Kafka: 0)
      | OffsetSyncInterval Int  -- ^ Sync after specified interval in millis
  
  -- | Indicates the method of storing the offsets
  data OffsetStoreMethod =
        OffsetStoreBroker                         -- ^ Offsets are stored in Kafka broker (preferred)
      | OffsetStoreFile FilePath OffsetStoreSync  -- ^ Offsets are stored in a file (and synced to disk according to the sync policy)
  
  -- | Kafka topic partition structure
  data KafkaTopicPartition = KafkaTopicPartition
    { ktpTopicName :: TopicName
    , ktpPartition :: Int
    , ktpOffset    :: KafkaOffset } deriving (Show, Eq)
  
  