blob: cd33749d5e564f419fd562b99248ce226d34c32e [file] [log] [blame]
khenaidooac637102019-01-14 15:44:34 -05001package sarama
2
3import "time"
4
khenaidood948f772021-08-11 17:49:24 -04005// DeleteAclsResponse is a delete acl response
khenaidooac637102019-01-14 15:44:34 -05006type DeleteAclsResponse struct {
William Kurkiandaa6bb22019-03-07 12:26:28 -05007 Version int16
khenaidooac637102019-01-14 15:44:34 -05008 ThrottleTime time.Duration
9 FilterResponses []*FilterResponse
10}
11
Scott Baker8461e152019-10-01 14:44:30 -070012func (d *DeleteAclsResponse) encode(pe packetEncoder) error {
13 pe.putInt32(int32(d.ThrottleTime / time.Millisecond))
khenaidooac637102019-01-14 15:44:34 -050014
Scott Baker8461e152019-10-01 14:44:30 -070015 if err := pe.putArrayLength(len(d.FilterResponses)); err != nil {
khenaidooac637102019-01-14 15:44:34 -050016 return err
17 }
18
Scott Baker8461e152019-10-01 14:44:30 -070019 for _, filterResponse := range d.FilterResponses {
20 if err := filterResponse.encode(pe, d.Version); err != nil {
khenaidooac637102019-01-14 15:44:34 -050021 return err
22 }
23 }
24
25 return nil
26}
27
Scott Baker8461e152019-10-01 14:44:30 -070028func (d *DeleteAclsResponse) decode(pd packetDecoder, version int16) (err error) {
khenaidooac637102019-01-14 15:44:34 -050029 throttleTime, err := pd.getInt32()
30 if err != nil {
31 return err
32 }
Scott Baker8461e152019-10-01 14:44:30 -070033 d.ThrottleTime = time.Duration(throttleTime) * time.Millisecond
khenaidooac637102019-01-14 15:44:34 -050034
35 n, err := pd.getArrayLength()
36 if err != nil {
37 return err
38 }
Scott Baker8461e152019-10-01 14:44:30 -070039 d.FilterResponses = make([]*FilterResponse, n)
khenaidooac637102019-01-14 15:44:34 -050040
41 for i := 0; i < n; i++ {
Scott Baker8461e152019-10-01 14:44:30 -070042 d.FilterResponses[i] = new(FilterResponse)
43 if err := d.FilterResponses[i].decode(pd, version); err != nil {
khenaidooac637102019-01-14 15:44:34 -050044 return err
45 }
46 }
47
48 return nil
49}
50
51func (d *DeleteAclsResponse) key() int16 {
52 return 31
53}
54
55func (d *DeleteAclsResponse) version() int16 {
khenaidood948f772021-08-11 17:49:24 -040056 return d.Version
57}
58
59func (d *DeleteAclsResponse) headerVersion() int16 {
60 return 0
khenaidooac637102019-01-14 15:44:34 -050061}
62
63func (d *DeleteAclsResponse) requiredVersion() KafkaVersion {
64 return V0_11_0_0
65}
66
khenaidood948f772021-08-11 17:49:24 -040067// FilterResponse is a filter response type
khenaidooac637102019-01-14 15:44:34 -050068type FilterResponse struct {
69 Err KError
70 ErrMsg *string
71 MatchingAcls []*MatchingAcl
72}
73
William Kurkiandaa6bb22019-03-07 12:26:28 -050074func (f *FilterResponse) encode(pe packetEncoder, version int16) error {
khenaidooac637102019-01-14 15:44:34 -050075 pe.putInt16(int16(f.Err))
76 if err := pe.putNullableString(f.ErrMsg); err != nil {
77 return err
78 }
79
80 if err := pe.putArrayLength(len(f.MatchingAcls)); err != nil {
81 return err
82 }
83 for _, matchingAcl := range f.MatchingAcls {
William Kurkiandaa6bb22019-03-07 12:26:28 -050084 if err := matchingAcl.encode(pe, version); err != nil {
khenaidooac637102019-01-14 15:44:34 -050085 return err
86 }
87 }
88
89 return nil
90}
91
92func (f *FilterResponse) decode(pd packetDecoder, version int16) (err error) {
93 kerr, err := pd.getInt16()
94 if err != nil {
95 return err
96 }
97 f.Err = KError(kerr)
98
99 if f.ErrMsg, err = pd.getNullableString(); err != nil {
100 return err
101 }
102
103 n, err := pd.getArrayLength()
104 if err != nil {
105 return err
106 }
107 f.MatchingAcls = make([]*MatchingAcl, n)
108 for i := 0; i < n; i++ {
109 f.MatchingAcls[i] = new(MatchingAcl)
110 if err := f.MatchingAcls[i].decode(pd, version); err != nil {
111 return err
112 }
113 }
114
115 return nil
116}
117
khenaidood948f772021-08-11 17:49:24 -0400118// MatchingAcl is a matching acl type
khenaidooac637102019-01-14 15:44:34 -0500119type MatchingAcl struct {
120 Err KError
121 ErrMsg *string
122 Resource
123 Acl
124}
125
William Kurkiandaa6bb22019-03-07 12:26:28 -0500126func (m *MatchingAcl) encode(pe packetEncoder, version int16) error {
khenaidooac637102019-01-14 15:44:34 -0500127 pe.putInt16(int16(m.Err))
128 if err := pe.putNullableString(m.ErrMsg); err != nil {
129 return err
130 }
131
William Kurkiandaa6bb22019-03-07 12:26:28 -0500132 if err := m.Resource.encode(pe, version); err != nil {
khenaidooac637102019-01-14 15:44:34 -0500133 return err
134 }
135
136 if err := m.Acl.encode(pe); err != nil {
137 return err
138 }
139
140 return nil
141}
142
143func (m *MatchingAcl) decode(pd packetDecoder, version int16) (err error) {
144 kerr, err := pd.getInt16()
145 if err != nil {
146 return err
147 }
148 m.Err = KError(kerr)
149
150 if m.ErrMsg, err = pd.getNullableString(); err != nil {
151 return err
152 }
153
154 if err := m.Resource.decode(pd, version); err != nil {
155 return err
156 }
157
158 if err := m.Acl.decode(pd, version); err != nil {
159 return err
160 }
161
162 return nil
163}