blob: d42e2710737af66e65f54d45eb30d95cea31c7b0 [file] [log] [blame]
Abhay Kumar40252eb2025-10-13 13:25:53 +00001package sarama
2
3type DescribeConfigsRequest struct {
4 Version int16
5 Resources []*ConfigResource
6 IncludeSynonyms bool
7}
8
9func (r *DescribeConfigsRequest) setVersion(v int16) {
10 r.Version = v
11}
12
13type ConfigResource struct {
14 Type ConfigResourceType
15 Name string
16 ConfigNames []string
17}
18
19func (r *DescribeConfigsRequest) encode(pe packetEncoder) error {
20 if err := pe.putArrayLength(len(r.Resources)); err != nil {
21 return err
22 }
23
24 for _, c := range r.Resources {
25 pe.putInt8(int8(c.Type))
26 if err := pe.putString(c.Name); err != nil {
27 return err
28 }
29
30 if len(c.ConfigNames) == 0 {
31 pe.putInt32(-1)
32 continue
33 }
34 if err := pe.putStringArray(c.ConfigNames); err != nil {
35 return err
36 }
37 }
38
39 if r.Version >= 1 {
40 pe.putBool(r.IncludeSynonyms)
41 }
42
43 return nil
44}
45
46func (r *DescribeConfigsRequest) decode(pd packetDecoder, version int16) (err error) {
47 n, err := pd.getArrayLength()
48 if err != nil {
49 return err
50 }
51
52 r.Resources = make([]*ConfigResource, n)
53
54 for i := 0; i < n; i++ {
55 r.Resources[i] = &ConfigResource{}
56 t, err := pd.getInt8()
57 if err != nil {
58 return err
59 }
60 r.Resources[i].Type = ConfigResourceType(t)
61 name, err := pd.getString()
62 if err != nil {
63 return err
64 }
65 r.Resources[i].Name = name
66
67 confLength, err := pd.getArrayLength()
68 if err != nil {
69 return err
70 }
71
72 if confLength == -1 {
73 continue
74 }
75
76 cfnames := make([]string, confLength)
77 for i := 0; i < confLength; i++ {
78 s, err := pd.getString()
79 if err != nil {
80 return err
81 }
82 cfnames[i] = s
83 }
84 r.Resources[i].ConfigNames = cfnames
85 }
86 r.Version = version
87 if r.Version >= 1 {
88 b, err := pd.getBool()
89 if err != nil {
90 return err
91 }
92 r.IncludeSynonyms = b
93 }
94
95 return nil
96}
97
98func (r *DescribeConfigsRequest) key() int16 {
99 return apiKeyDescribeConfigs
100}
101
102func (r *DescribeConfigsRequest) version() int16 {
103 return r.Version
104}
105
106func (r *DescribeConfigsRequest) headerVersion() int16 {
107 return 1
108}
109
110func (r *DescribeConfigsRequest) isValidVersion() bool {
111 return r.Version >= 0 && r.Version <= 2
112}
113
114func (r *DescribeConfigsRequest) requiredVersion() KafkaVersion {
115 switch r.Version {
116 case 2:
117 return V2_0_0_0
118 case 1:
119 return V1_1_0_0
120 case 0:
121 return V0_11_0_0
122 default:
123 return V2_0_0_0
124 }
125}