blob: 0e72e3926a90735fc4194812f5a73afa376148d0 [file] [log] [blame]
khenaidooac637102019-01-14 15:44:34 -05001package sarama
2
khenaidood948f772021-08-11 17:49:24 -04003// ApiVersionsResponseBlock is an api version response block type
khenaidooac637102019-01-14 15:44:34 -05004type ApiVersionsResponseBlock struct {
5 ApiKey int16
6 MinVersion int16
7 MaxVersion int16
8}
9
10func (b *ApiVersionsResponseBlock) encode(pe packetEncoder) error {
11 pe.putInt16(b.ApiKey)
12 pe.putInt16(b.MinVersion)
13 pe.putInt16(b.MaxVersion)
14 return nil
15}
16
17func (b *ApiVersionsResponseBlock) decode(pd packetDecoder) error {
18 var err error
19
20 if b.ApiKey, err = pd.getInt16(); err != nil {
21 return err
22 }
23
24 if b.MinVersion, err = pd.getInt16(); err != nil {
25 return err
26 }
27
28 if b.MaxVersion, err = pd.getInt16(); err != nil {
29 return err
30 }
31
32 return nil
33}
34
khenaidood948f772021-08-11 17:49:24 -040035// ApiVersionsResponse is an api version response type
khenaidooac637102019-01-14 15:44:34 -050036type ApiVersionsResponse struct {
37 Err KError
38 ApiVersions []*ApiVersionsResponseBlock
39}
40
41func (r *ApiVersionsResponse) encode(pe packetEncoder) error {
42 pe.putInt16(int16(r.Err))
43 if err := pe.putArrayLength(len(r.ApiVersions)); err != nil {
44 return err
45 }
46 for _, apiVersion := range r.ApiVersions {
47 if err := apiVersion.encode(pe); err != nil {
48 return err
49 }
50 }
51 return nil
52}
53
54func (r *ApiVersionsResponse) decode(pd packetDecoder, version int16) error {
55 kerr, err := pd.getInt16()
56 if err != nil {
57 return err
58 }
59
60 r.Err = KError(kerr)
61
62 numBlocks, err := pd.getArrayLength()
63 if err != nil {
64 return err
65 }
66
67 r.ApiVersions = make([]*ApiVersionsResponseBlock, numBlocks)
68 for i := 0; i < numBlocks; i++ {
69 block := new(ApiVersionsResponseBlock)
70 if err := block.decode(pd); err != nil {
71 return err
72 }
73 r.ApiVersions[i] = block
74 }
75
76 return nil
77}
78
79func (r *ApiVersionsResponse) key() int16 {
80 return 18
81}
82
83func (r *ApiVersionsResponse) version() int16 {
84 return 0
85}
86
khenaidood948f772021-08-11 17:49:24 -040087func (a *ApiVersionsResponse) headerVersion() int16 {
88 return 0
89}
90
khenaidooac637102019-01-14 15:44:34 -050091func (r *ApiVersionsResponse) requiredVersion() KafkaVersion {
92 return V0_10_0_0
93}