{-# language BangPatterns #-}
{-# language NamedFieldPuns #-}
{-# language DataKinds #-}
{-# language DeriveFunctor #-}
{-# language DuplicateRecordFields #-}
{-# language FlexibleContexts #-}
{-# language GeneralizedNewtypeDeriving #-}
{-# language MultiParamTypeClasses #-}
{-# language OverloadedStrings #-}
{-# language PolyKinds #-}
{-# language RankNTypes #-}
{-# language TypeFamilies #-}
{-# language UnboxedTuples #-}
{-# language UndecidableInstances #-}
module Kafka.InitProducerId.Request.V4
( Request(..)
, toChunks
, request
) where
import Prelude hiding (id)
import Data.Int (Int16,Int32,Int64)
import Data.Text (Text)
import Data.Bytes.Builder (Builder)
import Data.Bytes.Chunks (Chunks)
import Data.WideWord (Word128)
import Data.Primitive (SmallArray)
import qualified Kafka.Builder as Builder
request :: Request
request :: Request
request = Request
{ $sel:transactionalId:Request :: Maybe Text
transactionalId = Maybe Text
forall a. Maybe a
Nothing
, $sel:transactionTimeoutMilliseconds:Request :: Int32
transactionTimeoutMilliseconds = Int32
2147483647
, $sel:producerId:Request :: Int64
producerId = (-Int64
1)
, $sel:producerEpoch:Request :: Int16
producerEpoch = (-Int16
1)
}
data Request = Request
{ Request -> Maybe Text
transactionalId :: !(Maybe Text)
, Request -> Int32
transactionTimeoutMilliseconds :: !Int32
, Request -> Int64
producerId :: !Int64
, Request -> Int16
producerEpoch :: !Int16
}
toChunks :: Request -> Chunks
toChunks :: Request -> Chunks
toChunks = Int -> Builder -> Chunks
Builder.run Int
128 (Builder -> Chunks) -> (Request -> Builder) -> Request -> Chunks
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Request -> Builder
encode
encode :: Request -> Builder
encode :: Request -> Builder
encode Request{Maybe Text
$sel:transactionalId:Request :: Request -> Maybe Text
transactionalId :: Maybe Text
transactionalId,Int32
$sel:transactionTimeoutMilliseconds:Request :: Request -> Int32
transactionTimeoutMilliseconds :: Int32
transactionTimeoutMilliseconds,Int64
$sel:producerId:Request :: Request -> Int64
producerId :: Int64
producerId,Int16
$sel:producerEpoch:Request :: Request -> Int16
producerEpoch :: Int16
producerEpoch} =
Maybe Text -> Builder
Builder.compactNullableString Maybe Text
transactionalId
Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<>
Int32 -> Builder
Builder.int32 Int32
transactionTimeoutMilliseconds
Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<>
Int64 -> Builder
Builder.int64 Int64
producerId
Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<>
Int16 -> Builder
Builder.int16 Int16
producerEpoch
Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<>
Word8 -> Builder
Builder.word8 Word8
0