{-# language BangPatterns #-} {-# language DuplicateRecordFields #-} {-# language NamedFieldPuns #-} module Kafka.ApiVersions.Response.V3 ( Response(..) , ApiKeyVersionSupport(..) , parser , decode , decodeHeaded ) where import Control.Applicative (liftA2) import Data.Bytes (Bytes) import Data.Bytes.Parser (Parser) import Data.Int (Int16) import Data.Int (Int32) import Data.Primitive (SmallArray) import Kafka.ApiKey (ApiKey) import Kafka.ErrorCode (ErrorCode) import Kafka.Parser.Context (Context) import Kafka.TaggedField (TaggedField) import qualified Data.Bytes.Parser as Parser import qualified Kafka.Parser.Context as Ctx import qualified Kafka.Header.Response.V0 as Header import qualified Kafka.TaggedField as TaggedField import qualified Kafka.Parser data Response = Response { Response -> ErrorCode errorCode :: !ErrorCode , Response -> SmallArray ApiKeyVersionSupport apiKeys :: !(SmallArray ApiKeyVersionSupport) , Response -> Int32 throttleTimeMilliseconds :: !Int32 , Response -> SmallArray TaggedField taggedFields :: !(SmallArray TaggedField) } deriving (Int -> Response -> ShowS [Response] -> ShowS Response -> String (Int -> Response -> ShowS) -> (Response -> String) -> ([Response] -> ShowS) -> Show Response forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> Response -> ShowS showsPrec :: Int -> Response -> ShowS $cshow :: Response -> String show :: Response -> String $cshowList :: [Response] -> ShowS showList :: [Response] -> ShowS Show) data ApiKeyVersionSupport = ApiKeyVersionSupport { ApiKeyVersionSupport -> ApiKey apiKey :: !ApiKey , ApiKeyVersionSupport -> Int16 minVersion :: !Int16 , ApiKeyVersionSupport -> Int16 maxVersion :: !Int16 , ApiKeyVersionSupport -> SmallArray TaggedField taggedFields :: !(SmallArray TaggedField) } deriving (Int -> ApiKeyVersionSupport -> ShowS [ApiKeyVersionSupport] -> ShowS ApiKeyVersionSupport -> String (Int -> ApiKeyVersionSupport -> ShowS) -> (ApiKeyVersionSupport -> String) -> ([ApiKeyVersionSupport] -> ShowS) -> Show ApiKeyVersionSupport forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> ApiKeyVersionSupport -> ShowS showsPrec :: Int -> ApiKeyVersionSupport -> ShowS $cshow :: ApiKeyVersionSupport -> String show :: ApiKeyVersionSupport -> String $cshowList :: [ApiKeyVersionSupport] -> ShowS showList :: [ApiKeyVersionSupport] -> ShowS Show) decodeHeaded :: Bytes -> Either Context (Header.Headed Response) decodeHeaded :: Bytes -> Either Context (Headed Response) decodeHeaded !Bytes b = (forall s. Parser Context s (Headed Response)) -> Bytes -> Either Context (Headed Response) forall e a. (forall s. Parser e s a) -> Bytes -> Either e a Parser.parseBytesEither ((Header -> Response -> Headed Response) -> Parser Context s Header -> Parser Context s Response -> Parser Context s (Headed Response) forall a b c. (a -> b -> c) -> Parser Context s a -> Parser Context s b -> Parser Context s c forall (f :: * -> *) a b c. Applicative f => (a -> b -> c) -> f a -> f b -> f c liftA2 Header -> Response -> Headed Response forall a. Header -> a -> Headed a Header.Headed (Context -> Parser Context s Header forall s. Context -> Parser Context s Header Header.parser Context Ctx.Top) (Context -> Parser Context s Response forall s. Context -> Parser Context s Response parser Context Ctx.Top Parser Context s Response -> Parser Context s () -> Parser Context s Response forall a b. Parser Context s a -> Parser Context s b -> Parser Context s a forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a <* Context -> Parser Context s () forall e s. e -> Parser e s () Parser.endOfInput Context Ctx.End) ) Bytes b decode :: Bytes -> Either Context Response decode :: Bytes -> Either Context Response decode !Bytes b = (forall s. Parser Context s Response) -> Bytes -> Either Context Response forall e a. (forall s. Parser e s a) -> Bytes -> Either e a Parser.parseBytesEither (Context -> Parser Context s Response forall s. Context -> Parser Context s Response parser Context Ctx.Top Parser Context s Response -> Parser Context s () -> Parser Context s Response forall a b. Parser Context s a -> Parser Context s b -> Parser Context s a forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a <* Context -> Parser Context s () forall e s. e -> Parser e s () Parser.endOfInput Context Ctx.End) Bytes b parserApiKey :: Context -> Parser Context s ApiKeyVersionSupport parserApiKey :: forall s. Context -> Parser Context s ApiKeyVersionSupport parserApiKey Context ctx = do ApiKey apiKey <- Context -> Parser Context s ApiKey forall e s. e -> Parser e s ApiKey Kafka.Parser.apiKey (Field -> Context -> Context Ctx.Field Field Ctx.ApiKey Context ctx) Int16 minVersion <- Context -> Parser Context s Int16 forall e s. e -> Parser e s Int16 Kafka.Parser.int16 (Field -> Context -> Context Ctx.Field Field Ctx.MinVersion Context ctx) Int16 maxVersion <- Context -> Parser Context s Int16 forall e s. e -> Parser e s Int16 Kafka.Parser.int16 (Field -> Context -> Context Ctx.Field Field Ctx.MaxVersion Context ctx) SmallArray TaggedField taggedFields <- Context -> Parser Context s (SmallArray TaggedField) forall s. Context -> Parser Context s (SmallArray TaggedField) TaggedField.parserMany (Field -> Context -> Context Ctx.Field Field Ctx.TagBuffer Context ctx) ApiKeyVersionSupport -> Parser Context s ApiKeyVersionSupport forall a. a -> Parser Context s a forall (f :: * -> *) a. Applicative f => a -> f a pure ApiKeyVersionSupport{ApiKey $sel:apiKey:ApiKeyVersionSupport :: ApiKey apiKey :: ApiKey apiKey,Int16 $sel:minVersion:ApiKeyVersionSupport :: Int16 minVersion :: Int16 minVersion,Int16 $sel:maxVersion:ApiKeyVersionSupport :: Int16 maxVersion :: Int16 maxVersion,SmallArray TaggedField $sel:taggedFields:ApiKeyVersionSupport :: SmallArray TaggedField taggedFields :: SmallArray TaggedField taggedFields} parser :: Context -> Parser Context s Response parser :: forall s. Context -> Parser Context s Response parser Context ctx = do ErrorCode errorCode <- Context -> Parser Context s ErrorCode forall e s. e -> Parser e s ErrorCode Kafka.Parser.errorCode (Field -> Context -> Context Ctx.Field Field Ctx.ErrorCode Context ctx) SmallArray ApiKeyVersionSupport apiKeys <- (Context -> Parser Context s ApiKeyVersionSupport) -> Context -> Parser Context s (SmallArray ApiKeyVersionSupport) forall s a. (Context -> Parser Context s a) -> Context -> Parser Context s (SmallArray a) Kafka.Parser.compactArray Context -> Parser Context s ApiKeyVersionSupport forall s. Context -> Parser Context s ApiKeyVersionSupport parserApiKey (Field -> Context -> Context Ctx.Field Field Ctx.ApiKeys Context ctx) Int32 throttleTimeMilliseconds <- Context -> Parser Context s Int32 forall e s. e -> Parser e s Int32 Kafka.Parser.int32 (Field -> Context -> Context Ctx.Field Field Ctx.ThrottleTimeMilliseconds Context ctx) SmallArray TaggedField taggedFields <- Context -> Parser Context s (SmallArray TaggedField) forall s. Context -> Parser Context s (SmallArray TaggedField) TaggedField.parserMany (Field -> Context -> Context Ctx.Field Field Ctx.TagBuffer Context ctx) Response -> Parser Context s Response forall a. a -> Parser Context s a forall (f :: * -> *) a. Applicative f => a -> f a pure Response{ErrorCode $sel:errorCode:Response :: ErrorCode errorCode :: ErrorCode errorCode,SmallArray ApiKeyVersionSupport $sel:apiKeys:Response :: SmallArray ApiKeyVersionSupport apiKeys :: SmallArray ApiKeyVersionSupport apiKeys,Int32 $sel:throttleTimeMilliseconds:Response :: Int32 throttleTimeMilliseconds :: Int32 throttleTimeMilliseconds,SmallArray TaggedField $sel:taggedFields:Response :: SmallArray TaggedField taggedFields :: SmallArray TaggedField taggedFields}