module Kafka.Producer.Convert ( copyMsgFlags , producePartitionInt , producePartitionCInt , handleProduceErr , handleProduceErr' , handleProduceErrT ) where import Foreign.C.Error (getErrno) import Foreign.C.Types (CInt) import Kafka.Internal.RdKafka (RdKafkaRespErrT(..), rdKafkaMsgFlagCopy) import Kafka.Internal.Shared (kafkaRespErr) import Kafka.Types (KafkaError(..)) import Kafka.Producer.Types (ProducePartition(..)) copyMsgFlags :: Int copyMsgFlags :: Int copyMsgFlags = Int rdKafkaMsgFlagCopy {-# INLINE copyMsgFlags #-} producePartitionInt :: ProducePartition -> Int producePartitionInt :: ProducePartition -> Int producePartitionInt UnassignedPartition = -1 producePartitionInt (SpecifiedPartition n :: Int n) = Int n {-# INLINE producePartitionInt #-} producePartitionCInt :: ProducePartition -> CInt producePartitionCInt :: ProducePartition -> CInt producePartitionCInt = Int -> CInt forall a b. (Integral a, Num b) => a -> b fromIntegral (Int -> CInt) -> (ProducePartition -> Int) -> ProducePartition -> CInt forall b c a. (b -> c) -> (a -> b) -> a -> c . ProducePartition -> Int producePartitionInt {-# INLINE producePartitionCInt #-} handleProduceErr :: Int -> IO (Maybe KafkaError) handleProduceErr :: Int -> IO (Maybe KafkaError) handleProduceErr (- 1) = KafkaError -> Maybe KafkaError forall a. a -> Maybe a Just (KafkaError -> Maybe KafkaError) -> (Errno -> KafkaError) -> Errno -> Maybe KafkaError forall b c a. (b -> c) -> (a -> b) -> a -> c . Errno -> KafkaError kafkaRespErr (Errno -> Maybe KafkaError) -> IO Errno -> IO (Maybe KafkaError) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> IO Errno getErrno handleProduceErr 0 = Maybe KafkaError -> IO (Maybe KafkaError) forall (m :: * -> *) a. Monad m => a -> m a return Maybe KafkaError forall a. Maybe a Nothing handleProduceErr _ = Maybe KafkaError -> IO (Maybe KafkaError) forall (m :: * -> *) a. Monad m => a -> m a return (Maybe KafkaError -> IO (Maybe KafkaError)) -> Maybe KafkaError -> IO (Maybe KafkaError) forall a b. (a -> b) -> a -> b $ KafkaError -> Maybe KafkaError forall a. a -> Maybe a Just KafkaError KafkaInvalidReturnValue {-# INLINE handleProduceErr #-} handleProduceErrT :: RdKafkaRespErrT -> IO (Maybe KafkaError) handleProduceErrT :: RdKafkaRespErrT -> IO (Maybe KafkaError) handleProduceErrT RdKafkaRespErrUnknown = KafkaError -> Maybe KafkaError forall a. a -> Maybe a Just (KafkaError -> Maybe KafkaError) -> (Errno -> KafkaError) -> Errno -> Maybe KafkaError forall b c a. (b -> c) -> (a -> b) -> a -> c . Errno -> KafkaError kafkaRespErr (Errno -> Maybe KafkaError) -> IO Errno -> IO (Maybe KafkaError) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> IO Errno getErrno handleProduceErrT RdKafkaRespErrNoError = Maybe KafkaError -> IO (Maybe KafkaError) forall (m :: * -> *) a. Monad m => a -> m a return Maybe KafkaError forall a. Maybe a Nothing handleProduceErrT e :: RdKafkaRespErrT e = Maybe KafkaError -> IO (Maybe KafkaError) forall (m :: * -> *) a. Monad m => a -> m a return (Maybe KafkaError -> IO (Maybe KafkaError)) -> Maybe KafkaError -> IO (Maybe KafkaError) forall a b. (a -> b) -> a -> b $ KafkaError -> Maybe KafkaError forall a. a -> Maybe a Just (RdKafkaRespErrT -> KafkaError KafkaResponseError RdKafkaRespErrT e) {-# INLINE handleProduceErrT #-} handleProduceErr' :: Int -> IO (Either KafkaError ()) handleProduceErr' :: Int -> IO (Either KafkaError ()) handleProduceErr' (- 1) = KafkaError -> Either KafkaError () forall a b. a -> Either a b Left (KafkaError -> Either KafkaError ()) -> (Errno -> KafkaError) -> Errno -> Either KafkaError () forall b c a. (b -> c) -> (a -> b) -> a -> c . Errno -> KafkaError kafkaRespErr (Errno -> Either KafkaError ()) -> IO Errno -> IO (Either KafkaError ()) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> IO Errno getErrno handleProduceErr' 0 = Either KafkaError () -> IO (Either KafkaError ()) forall (m :: * -> *) a. Monad m => a -> m a return (() -> Either KafkaError () forall a b. b -> Either a b Right ()) handleProduceErr' _ = Either KafkaError () -> IO (Either KafkaError ()) forall (m :: * -> *) a. Monad m => a -> m a return (Either KafkaError () -> IO (Either KafkaError ())) -> Either KafkaError () -> IO (Either KafkaError ()) forall a b. (a -> b) -> a -> b $ KafkaError -> Either KafkaError () forall a b. a -> Either a b Left KafkaError KafkaInvalidReturnValue {-# INLINE handleProduceErr' #-}