blob: bc6637e6763faaeb4c8f24aa3f4b688fc4f3fca7 [file] [log] [blame]
Abhay Kumara2ae5992025-11-10 14:02:24 +00001package sarama
2
3import "time"
4
5// DeleteAclsResponse is a delete acl response
6type DeleteAclsResponse struct {
7 Version int16
8 ThrottleTime time.Duration
9 FilterResponses []*FilterResponse
10}
11
12func (d *DeleteAclsResponse) setVersion(v int16) {
13 d.Version = v
14}
15
16func (d *DeleteAclsResponse) encode(pe packetEncoder) error {
17 pe.putDurationMs(d.ThrottleTime)
18
19 if err := pe.putArrayLength(len(d.FilterResponses)); err != nil {
20 return err
21 }
22
23 for _, filterResponse := range d.FilterResponses {
24 if err := filterResponse.encode(pe, d.Version); err != nil {
25 return err
26 }
27 }
28
29 return nil
30}
31
32func (d *DeleteAclsResponse) decode(pd packetDecoder, version int16) (err error) {
33 if d.ThrottleTime, err = pd.getDurationMs(); err != nil {
34 return err
35 }
36
37 n, err := pd.getArrayLength()
38 if err != nil {
39 return err
40 }
41 d.FilterResponses = make([]*FilterResponse, n)
42
43 for i := 0; i < n; i++ {
44 d.FilterResponses[i] = new(FilterResponse)
45 if err := d.FilterResponses[i].decode(pd, version); err != nil {
46 return err
47 }
48 }
49
50 return nil
51}
52
53func (d *DeleteAclsResponse) key() int16 {
54 return apiKeyDeleteAcls
55}
56
57func (d *DeleteAclsResponse) version() int16 {
58 return d.Version
59}
60
61func (d *DeleteAclsResponse) headerVersion() int16 {
62 return 0
63}
64
65func (d *DeleteAclsResponse) isValidVersion() bool {
66 return d.Version >= 0 && d.Version <= 1
67}
68
69func (d *DeleteAclsResponse) requiredVersion() KafkaVersion {
70 switch d.Version {
71 case 1:
72 return V2_0_0_0
73 default:
74 return V0_11_0_0
75 }
76}
77
78func (r *DeleteAclsResponse) throttleTime() time.Duration {
79 return r.ThrottleTime
80}
81
82// FilterResponse is a filter response type
83type FilterResponse struct {
84 Err KError
85 ErrMsg *string
86 MatchingAcls []*MatchingAcl
87}
88
89func (f *FilterResponse) encode(pe packetEncoder, version int16) error {
90 pe.putKError(f.Err)
91 if err := pe.putNullableString(f.ErrMsg); err != nil {
92 return err
93 }
94
95 if err := pe.putArrayLength(len(f.MatchingAcls)); err != nil {
96 return err
97 }
98 for _, matchingAcl := range f.MatchingAcls {
99 if err := matchingAcl.encode(pe, version); err != nil {
100 return err
101 }
102 }
103
104 return nil
105}
106
107func (f *FilterResponse) decode(pd packetDecoder, version int16) (err error) {
108 f.Err, err = pd.getKError()
109 if err != nil {
110 return err
111 }
112
113 if f.ErrMsg, err = pd.getNullableString(); err != nil {
114 return err
115 }
116
117 n, err := pd.getArrayLength()
118 if err != nil {
119 return err
120 }
121 f.MatchingAcls = make([]*MatchingAcl, n)
122 for i := 0; i < n; i++ {
123 f.MatchingAcls[i] = new(MatchingAcl)
124 if err := f.MatchingAcls[i].decode(pd, version); err != nil {
125 return err
126 }
127 }
128
129 return nil
130}
131
132// MatchingAcl is a matching acl type
133type MatchingAcl struct {
134 Err KError
135 ErrMsg *string
136 Resource
137 Acl
138}
139
140func (m *MatchingAcl) encode(pe packetEncoder, version int16) error {
141 pe.putKError(m.Err)
142 if err := pe.putNullableString(m.ErrMsg); err != nil {
143 return err
144 }
145
146 if err := m.Resource.encode(pe, version); err != nil {
147 return err
148 }
149
150 if err := m.Acl.encode(pe); err != nil {
151 return err
152 }
153
154 return nil
155}
156
157func (m *MatchingAcl) decode(pd packetDecoder, version int16) (err error) {
158 m.Err, err = pd.getKError()
159 if err != nil {
160 return err
161 }
162
163 if m.ErrMsg, err = pd.getNullableString(); err != nil {
164 return err
165 }
166
167 if err := m.Resource.decode(pd, version); err != nil {
168 return err
169 }
170
171 if err := m.Acl.decode(pd, version); err != nil {
172 return err
173 }
174
175 return nil
176}