blob: 51517359abcc0c19e7693a53cf37ad4eefde2592 [file] [log] [blame]
khenaidooac637102019-01-14 15:44:34 -05001package sarama
2
3type Resource struct {
4 ResourceType AclResourceType
5 ResourceName string
6}
7
8func (r *Resource) encode(pe packetEncoder) error {
9 pe.putInt8(int8(r.ResourceType))
10
11 if err := pe.putString(r.ResourceName); err != nil {
12 return err
13 }
14
15 return nil
16}
17
18func (r *Resource) decode(pd packetDecoder, version int16) (err error) {
19 resourceType, err := pd.getInt8()
20 if err != nil {
21 return err
22 }
23 r.ResourceType = AclResourceType(resourceType)
24
25 if r.ResourceName, err = pd.getString(); err != nil {
26 return err
27 }
28
29 return nil
30}
31
32type Acl struct {
33 Principal string
34 Host string
35 Operation AclOperation
36 PermissionType AclPermissionType
37}
38
39func (a *Acl) encode(pe packetEncoder) error {
40 if err := pe.putString(a.Principal); err != nil {
41 return err
42 }
43
44 if err := pe.putString(a.Host); err != nil {
45 return err
46 }
47
48 pe.putInt8(int8(a.Operation))
49 pe.putInt8(int8(a.PermissionType))
50
51 return nil
52}
53
54func (a *Acl) decode(pd packetDecoder, version int16) (err error) {
55 if a.Principal, err = pd.getString(); err != nil {
56 return err
57 }
58
59 if a.Host, err = pd.getString(); err != nil {
60 return err
61 }
62
63 operation, err := pd.getInt8()
64 if err != nil {
65 return err
66 }
67 a.Operation = AclOperation(operation)
68
69 permissionType, err := pd.getInt8()
70 if err != nil {
71 return err
72 }
73 a.PermissionType = AclPermissionType(permissionType)
74
75 return nil
76}
77
78type ResourceAcls struct {
79 Resource
80 Acls []*Acl
81}
82
83func (r *ResourceAcls) encode(pe packetEncoder) error {
84 if err := r.Resource.encode(pe); err != nil {
85 return err
86 }
87
88 if err := pe.putArrayLength(len(r.Acls)); err != nil {
89 return err
90 }
91 for _, acl := range r.Acls {
92 if err := acl.encode(pe); err != nil {
93 return err
94 }
95 }
96
97 return nil
98}
99
100func (r *ResourceAcls) decode(pd packetDecoder, version int16) error {
101 if err := r.Resource.decode(pd, version); err != nil {
102 return err
103 }
104
105 n, err := pd.getArrayLength()
106 if err != nil {
107 return err
108 }
109
110 r.Acls = make([]*Acl, n)
111 for i := 0; i < n; i++ {
112 r.Acls[i] = new(Acl)
113 if err := r.Acls[i].decode(pd, version); err != nil {
114 return err
115 }
116 }
117
118 return nil
119}