blob: 449102f74a7cbffbe46b665be7b858a6a40c6347 [file] [log] [blame]
Scott Bakered4efab2020-01-13 19:12:25 -08001package sarama
2
David K. Bainbridgebd6b2882021-08-26 13:31:02 +00003// CreateAclsRequest is an acl creation request
Scott Bakered4efab2020-01-13 19:12:25 -08004type 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
David K. Bainbridgebd6b2882021-08-26 13:31:02 +000050func (c *CreateAclsRequest) headerVersion() int16 {
51 return 1
52}
53
Scott Bakered4efab2020-01-13 19:12:25 -080054func (c *CreateAclsRequest) requiredVersion() KafkaVersion {
55 switch c.Version {
56 case 1:
57 return V2_0_0_0
58 default:
59 return V0_11_0_0
60 }
61}
62
David K. Bainbridgebd6b2882021-08-26 13:31:02 +000063// AclCreation is a wrapper around Resource and Acl type
Scott Bakered4efab2020-01-13 19:12:25 -080064type AclCreation struct {
65 Resource
66 Acl
67}
68
69func (a *AclCreation) encode(pe packetEncoder, version int16) error {
70 if err := a.Resource.encode(pe, version); err != nil {
71 return err
72 }
73 if err := a.Acl.encode(pe); err != nil {
74 return err
75 }
76
77 return nil
78}
79
80func (a *AclCreation) decode(pd packetDecoder, version int16) (err error) {
81 if err := a.Resource.decode(pd, version); err != nil {
82 return err
83 }
84 if err := a.Acl.decode(pd, version); err != nil {
85 return err
86 }
87
88 return nil
89}