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