blob: da1cdefc301f35663bdbd3780cd3bb0a79d29c52 [file] [log] [blame]
Scott Bakered4efab2020-01-13 19:12:25 -08001package sarama
2
3//CreateAclsRequest is an acl creation request
4type CreateAclsRequest struct {
5 Version int16
6 AclCreations []*AclCreation
7}
8
9func (c *CreateAclsRequest) encode(pe packetEncoder) error {
10 if err := pe.putArrayLength(len(c.AclCreations)); err != nil {
11 return err
12 }
13
14 for _, aclCreation := range c.AclCreations {
15 if err := aclCreation.encode(pe, c.Version); err != nil {
16 return err
17 }
18 }
19
20 return nil
21}
22
23func (c *CreateAclsRequest) decode(pd packetDecoder, version int16) (err error) {
24 c.Version = version
25 n, err := pd.getArrayLength()
26 if err != nil {
27 return err
28 }
29
30 c.AclCreations = make([]*AclCreation, n)
31
32 for i := 0; i < n; i++ {
33 c.AclCreations[i] = new(AclCreation)
34 if err := c.AclCreations[i].decode(pd, version); err != nil {
35 return err
36 }
37 }
38
39 return nil
40}
41
42func (c *CreateAclsRequest) key() int16 {
43 return 30
44}
45
46func (c *CreateAclsRequest) version() int16 {
47 return c.Version
48}
49
50func (c *CreateAclsRequest) requiredVersion() KafkaVersion {
51 switch c.Version {
52 case 1:
53 return V2_0_0_0
54 default:
55 return V0_11_0_0
56 }
57}
58
59//AclCreation is a wrapper around Resource and Acl type
60type AclCreation struct {
61 Resource
62 Acl
63}
64
65func (a *AclCreation) encode(pe packetEncoder, version int16) error {
66 if err := a.Resource.encode(pe, version); err != nil {
67 return err
68 }
69 if err := a.Acl.encode(pe); err != nil {
70 return err
71 }
72
73 return nil
74}
75
76func (a *AclCreation) decode(pd packetDecoder, version int16) (err error) {
77 if err := a.Resource.decode(pd, version); err != nil {
78 return err
79 }
80 if err := a.Acl.decode(pd, version); err != nil {
81 return err
82 }
83
84 return nil
85}