cubefs

Форк
0
/
acl_describe_response.go 
91 строка · 1.7 Кб
1
package sarama
2

3
import "time"
4

5
// DescribeAclsResponse is a describe acl response type
6
type DescribeAclsResponse struct {
7
	Version      int16
8
	ThrottleTime time.Duration
9
	Err          KError
10
	ErrMsg       *string
11
	ResourceAcls []*ResourceAcls
12
}
13

14
func (d *DescribeAclsResponse) encode(pe packetEncoder) error {
15
	pe.putInt32(int32(d.ThrottleTime / time.Millisecond))
16
	pe.putInt16(int16(d.Err))
17

18
	if err := pe.putNullableString(d.ErrMsg); err != nil {
19
		return err
20
	}
21

22
	if err := pe.putArrayLength(len(d.ResourceAcls)); err != nil {
23
		return err
24
	}
25

26
	for _, resourceAcl := range d.ResourceAcls {
27
		if err := resourceAcl.encode(pe, d.Version); err != nil {
28
			return err
29
		}
30
	}
31

32
	return nil
33
}
34

35
func (d *DescribeAclsResponse) decode(pd packetDecoder, version int16) (err error) {
36
	throttleTime, err := pd.getInt32()
37
	if err != nil {
38
		return err
39
	}
40
	d.ThrottleTime = time.Duration(throttleTime) * time.Millisecond
41

42
	kerr, err := pd.getInt16()
43
	if err != nil {
44
		return err
45
	}
46
	d.Err = KError(kerr)
47

48
	errmsg, err := pd.getString()
49
	if err != nil {
50
		return err
51
	}
52
	if errmsg != "" {
53
		d.ErrMsg = &errmsg
54
	}
55

56
	n, err := pd.getArrayLength()
57
	if err != nil {
58
		return err
59
	}
60
	d.ResourceAcls = make([]*ResourceAcls, n)
61

62
	for i := 0; i < n; i++ {
63
		d.ResourceAcls[i] = new(ResourceAcls)
64
		if err := d.ResourceAcls[i].decode(pd, version); err != nil {
65
			return err
66
		}
67
	}
68

69
	return nil
70
}
71

72
func (d *DescribeAclsResponse) key() int16 {
73
	return 29
74
}
75

76
func (d *DescribeAclsResponse) version() int16 {
77
	return d.Version
78
}
79

80
func (d *DescribeAclsResponse) headerVersion() int16 {
81
	return 0
82
}
83

84
func (d *DescribeAclsResponse) requiredVersion() KafkaVersion {
85
	switch d.Version {
86
	case 1:
87
		return V2_0_0_0
88
	default:
89
		return V0_11_0_0
90
	}
91
}
92

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.