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