{-# LANGUAGE DeriveDataTypeable #-}
module Kafka.Producer.Types
where
import qualified Data.ByteString as BS
import Data.Typeable
import Kafka.Types
data KafkaProducer = KafkaProducer
{ kpKafkaPtr :: !Kafka
, kpKafkaConf :: !KafkaConf
, kpTopicConf :: !TopicConf
} deriving (Show)
instance HasKafka KafkaProducer where
getKafka = kpKafkaPtr
{-# INLINE getKafka #-}
instance HasKafkaConf KafkaProducer where
getKafkaConf = kpKafkaConf
{-# INLINE getKafkaConf #-}
data ProducerRecord = ProducerRecord
{ prTopic :: !TopicName
, prPartition :: !ProducePartition
, prKey :: Maybe BS.ByteString
, prValue :: Maybe BS.ByteString
} deriving (Eq, Show, Typeable)
data ProducePartition =
SpecifiedPartition {-# UNPACK #-} !Int
| UnassignedPartition
deriving (Show, Eq, Ord, Typeable)