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