blob: c4d05a972041e4e0d45353050b57085bd104c937 [file] [log] [blame]
khenaidood948f772021-08-11 17:49:24 -04001package sarama
2
3type IncrementalAlterConfigsOperation int8
4
5const (
6 IncrementalAlterConfigsOperationSet IncrementalAlterConfigsOperation = iota
7 IncrementalAlterConfigsOperationDelete
8 IncrementalAlterConfigsOperationAppend
9 IncrementalAlterConfigsOperationSubtract
10)
11
12// IncrementalAlterConfigsRequest is an incremental alter config request type
13type IncrementalAlterConfigsRequest struct {
14 Resources []*IncrementalAlterConfigsResource
15 ValidateOnly bool
16}
17
18type IncrementalAlterConfigsResource struct {
19 Type ConfigResourceType
20 Name string
21 ConfigEntries map[string]IncrementalAlterConfigsEntry
22}
23
24type IncrementalAlterConfigsEntry struct {
25 Operation IncrementalAlterConfigsOperation
26 Value *string
27}
28
29func (a *IncrementalAlterConfigsRequest) encode(pe packetEncoder) error {
30 if err := pe.putArrayLength(len(a.Resources)); err != nil {
31 return err
32 }
33
34 for _, r := range a.Resources {
35 if err := r.encode(pe); err != nil {
36 return err
37 }
38 }
39
40 pe.putBool(a.ValidateOnly)
41 return nil
42}
43
44func (a *IncrementalAlterConfigsRequest) decode(pd packetDecoder, version int16) error {
45 resourceCount, err := pd.getArrayLength()
46 if err != nil {
47 return err
48 }
49
50 a.Resources = make([]*IncrementalAlterConfigsResource, resourceCount)
51 for i := range a.Resources {
52 r := &IncrementalAlterConfigsResource{}
53 err = r.decode(pd, version)
54 if err != nil {
55 return err
56 }
57 a.Resources[i] = r
58 }
59
60 validateOnly, err := pd.getBool()
61 if err != nil {
62 return err
63 }
64
65 a.ValidateOnly = validateOnly
66
67 return nil
68}
69
70func (a *IncrementalAlterConfigsResource) encode(pe packetEncoder) error {
71 pe.putInt8(int8(a.Type))
72
73 if err := pe.putString(a.Name); err != nil {
74 return err
75 }
76
77 if err := pe.putArrayLength(len(a.ConfigEntries)); err != nil {
78 return err
79 }
80
81 for name, e := range a.ConfigEntries {
82 if err := pe.putString(name); err != nil {
83 return err
84 }
85
86 if err := e.encode(pe); err != nil {
87 return err
88 }
89 }
90
91 return nil
92}
93
94func (a *IncrementalAlterConfigsResource) decode(pd packetDecoder, version int16) error {
95 t, err := pd.getInt8()
96 if err != nil {
97 return err
98 }
99 a.Type = ConfigResourceType(t)
100
101 name, err := pd.getString()
102 if err != nil {
103 return err
104 }
105 a.Name = name
106
107 n, err := pd.getArrayLength()
108 if err != nil {
109 return err
110 }
111
112 if n > 0 {
113 a.ConfigEntries = make(map[string]IncrementalAlterConfigsEntry, n)
114 for i := 0; i < n; i++ {
115 name, err := pd.getString()
116 if err != nil {
117 return err
118 }
119
120 var v IncrementalAlterConfigsEntry
121
122 if err := v.decode(pd, version); err != nil {
123 return err
124 }
125
126 a.ConfigEntries[name] = v
127 }
128 }
129 return err
130}
131
132func (a *IncrementalAlterConfigsEntry) encode(pe packetEncoder) error {
133 pe.putInt8(int8(a.Operation))
134
135 if err := pe.putNullableString(a.Value); err != nil {
136 return err
137 }
138
139 return nil
140}
141
142func (a *IncrementalAlterConfigsEntry) decode(pd packetDecoder, version int16) error {
143 t, err := pd.getInt8()
144 if err != nil {
145 return err
146 }
147 a.Operation = IncrementalAlterConfigsOperation(t)
148
149 s, err := pd.getNullableString()
150 if err != nil {
151 return err
152 }
153
154 a.Value = s
155
156 return nil
157}
158
159func (a *IncrementalAlterConfigsRequest) key() int16 {
160 return 44
161}
162
163func (a *IncrementalAlterConfigsRequest) version() int16 {
164 return 0
165}
166
167func (a *IncrementalAlterConfigsRequest) headerVersion() int16 {
168 return 1
169}
170
171func (a *IncrementalAlterConfigsRequest) requiredVersion() KafkaVersion {
172 return V2_3_0_0
173}