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