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