blob: 48c44ead67a747f03d4e70e34bd3ecb00f1725c0 [file] [log] [blame]
William Kurkianea869482019-04-09 15:16:11 -04001package sarama
2
3type AlterConfigsRequest struct {
4 Resources []*AlterConfigsResource
5 ValidateOnly bool
6}
7
8type AlterConfigsResource struct {
9 Type ConfigResourceType
10 Name string
11 ConfigEntries map[string]*string
12}
13
14func (acr *AlterConfigsRequest) encode(pe packetEncoder) error {
15 if err := pe.putArrayLength(len(acr.Resources)); err != nil {
16 return err
17 }
18
19 for _, r := range acr.Resources {
20 if err := r.encode(pe); err != nil {
21 return err
22 }
23 }
24
25 pe.putBool(acr.ValidateOnly)
26 return nil
27}
28
29func (acr *AlterConfigsRequest) decode(pd packetDecoder, version int16) error {
30 resourceCount, err := pd.getArrayLength()
31 if err != nil {
32 return err
33 }
34
35 acr.Resources = make([]*AlterConfigsResource, resourceCount)
36 for i := range acr.Resources {
37 r := &AlterConfigsResource{}
38 err = r.decode(pd, version)
39 if err != nil {
40 return err
41 }
42 acr.Resources[i] = r
43 }
44
45 validateOnly, err := pd.getBool()
46 if err != nil {
47 return err
48 }
49
50 acr.ValidateOnly = validateOnly
51
52 return nil
53}
54
55func (ac *AlterConfigsResource) encode(pe packetEncoder) error {
56 pe.putInt8(int8(ac.Type))
57
58 if err := pe.putString(ac.Name); err != nil {
59 return err
60 }
61
62 if err := pe.putArrayLength(len(ac.ConfigEntries)); err != nil {
63 return err
64 }
65 for configKey, configValue := range ac.ConfigEntries {
66 if err := pe.putString(configKey); err != nil {
67 return err
68 }
69 if err := pe.putNullableString(configValue); err != nil {
70 return err
71 }
72 }
73
74 return nil
75}
76
77func (ac *AlterConfigsResource) decode(pd packetDecoder, version int16) error {
78 t, err := pd.getInt8()
79 if err != nil {
80 return err
81 }
82 ac.Type = ConfigResourceType(t)
83
84 name, err := pd.getString()
85 if err != nil {
86 return err
87 }
88 ac.Name = name
89
90 n, err := pd.getArrayLength()
91 if err != nil {
92 return err
93 }
94
95 if n > 0 {
96 ac.ConfigEntries = make(map[string]*string, n)
97 for i := 0; i < n; i++ {
98 configKey, err := pd.getString()
99 if err != nil {
100 return err
101 }
102 if ac.ConfigEntries[configKey], err = pd.getNullableString(); err != nil {
103 return err
104 }
105 }
106 }
107 return err
108}
109
110func (acr *AlterConfigsRequest) key() int16 {
111 return 33
112}
113
114func (acr *AlterConfigsRequest) version() int16 {
115 return 0
116}
117
118func (acr *AlterConfigsRequest) requiredVersion() KafkaVersion {
119 return V0_11_0_0
120}