cubefs

Форк
0
/
describe_configs_request.go 
115 строк · 2.0 Кб
1
package sarama
2

3
type DescribeConfigsRequest struct {
4
	Version         int16
5
	Resources       []*ConfigResource
6
	IncludeSynonyms bool
7
}
8

9
type ConfigResource struct {
10
	Type        ConfigResourceType
11
	Name        string
12
	ConfigNames []string
13
}
14

15
func (r *DescribeConfigsRequest) encode(pe packetEncoder) error {
16
	if err := pe.putArrayLength(len(r.Resources)); err != nil {
17
		return err
18
	}
19

20
	for _, c := range r.Resources {
21
		pe.putInt8(int8(c.Type))
22
		if err := pe.putString(c.Name); err != nil {
23
			return err
24
		}
25

26
		if len(c.ConfigNames) == 0 {
27
			pe.putInt32(-1)
28
			continue
29
		}
30
		if err := pe.putStringArray(c.ConfigNames); err != nil {
31
			return err
32
		}
33
	}
34

35
	if r.Version >= 1 {
36
		pe.putBool(r.IncludeSynonyms)
37
	}
38

39
	return nil
40
}
41

42
func (r *DescribeConfigsRequest) decode(pd packetDecoder, version int16) (err error) {
43
	n, err := pd.getArrayLength()
44
	if err != nil {
45
		return err
46
	}
47

48
	r.Resources = make([]*ConfigResource, n)
49

50
	for i := 0; i < n; i++ {
51
		r.Resources[i] = &ConfigResource{}
52
		t, err := pd.getInt8()
53
		if err != nil {
54
			return err
55
		}
56
		r.Resources[i].Type = ConfigResourceType(t)
57
		name, err := pd.getString()
58
		if err != nil {
59
			return err
60
		}
61
		r.Resources[i].Name = name
62

63
		confLength, err := pd.getArrayLength()
64
		if err != nil {
65
			return err
66
		}
67

68
		if confLength == -1 {
69
			continue
70
		}
71

72
		cfnames := make([]string, confLength)
73
		for i := 0; i < confLength; i++ {
74
			s, err := pd.getString()
75
			if err != nil {
76
				return err
77
			}
78
			cfnames[i] = s
79
		}
80
		r.Resources[i].ConfigNames = cfnames
81
	}
82
	r.Version = version
83
	if r.Version >= 1 {
84
		b, err := pd.getBool()
85
		if err != nil {
86
			return err
87
		}
88
		r.IncludeSynonyms = b
89
	}
90

91
	return nil
92
}
93

94
func (r *DescribeConfigsRequest) key() int16 {
95
	return 32
96
}
97

98
func (r *DescribeConfigsRequest) version() int16 {
99
	return r.Version
100
}
101

102
func (r *DescribeConfigsRequest) headerVersion() int16 {
103
	return 1
104
}
105

106
func (r *DescribeConfigsRequest) requiredVersion() KafkaVersion {
107
	switch r.Version {
108
	case 1:
109
		return V1_1_0_0
110
	case 2:
111
		return V2_0_0_0
112
	default:
113
		return V0_11_0_0
114
	}
115
}
116

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

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

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

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