blob: 8b94b1f3fe4061cf7e544283ed29741cdde1d0a9 [file] [log] [blame]
Holger Hildebrandtfa074992020-03-27 15:42:06 +00001package sarama
2
khenaidoo7d3c5582021-08-11 18:09:44 -04003// AlterConfigsRequest is an alter config request type
Holger Hildebrandtfa074992020-03-27 15:42:06 +00004type AlterConfigsRequest struct {
5 Resources []*AlterConfigsResource
6 ValidateOnly bool
7}
8
khenaidoo7d3c5582021-08-11 18:09:44 -04009// AlterConfigsResource is an alter config resource type
Holger Hildebrandtfa074992020-03-27 15:42:06 +000010type 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
khenaidoo7d3c5582021-08-11 18:09:44 -0400120func (a *AlterConfigsRequest) headerVersion() int16 {
121 return 1
122}
123
Holger Hildebrandtfa074992020-03-27 15:42:06 +0000124func (a *AlterConfigsRequest) requiredVersion() KafkaVersion {
125 return V0_11_0_0
126}