hw-kafka-client-2.6.0: src/Kafka/Producer/Convert.hs
module Kafka.Producer.Convert
( copyMsgFlags
, producePartitionInt
, producePartitionCInt
, handleProduceErr
)
where
import Foreign.C.Error (getErrno)
import Foreign.C.Types (CInt)
import Kafka.Internal.RdKafka (rdKafkaMsgFlagCopy)
import Kafka.Internal.Shared (kafkaRespErr)
import Kafka.Types (KafkaError(..))
import Kafka.Producer.Types (ProducePartition(..))
copyMsgFlags :: Int
copyMsgFlags = rdKafkaMsgFlagCopy
{-# INLINE copyMsgFlags #-}
producePartitionInt :: ProducePartition -> Int
producePartitionInt UnassignedPartition = -1
producePartitionInt (SpecifiedPartition n) = n
{-# INLINE producePartitionInt #-}
producePartitionCInt :: ProducePartition -> CInt
producePartitionCInt = fromIntegral . producePartitionInt
{-# INLINE producePartitionCInt #-}
handleProduceErr :: Int -> IO (Maybe KafkaError)
handleProduceErr (- 1) = (Just . kafkaRespErr) <$> getErrno
handleProduceErr 0 = return Nothing
handleProduceErr _ = return $ Just KafkaInvalidReturnValue
{-# INLINE handleProduceErr #-}