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