blob: cde2686cbe44a1ce45f296333d8040d1ea42ead8 [file] [log] [blame]
Abhay Kumar40252eb2025-10-13 13:25:53 +00001package sarama
2
3import (
4 "fmt"
5 "time"
6)
7
8// AlterConfigsResponse is a response type for alter config
9type AlterConfigsResponse struct {
10 Version int16
11 ThrottleTime time.Duration
12 Resources []*AlterConfigsResourceResponse
13}
14
15func (a *AlterConfigsResponse) setVersion(v int16) {
16 a.Version = v
17}
18
19type AlterConfigError struct {
20 Err KError
21 ErrMsg string
22}
23
24func (c *AlterConfigError) Error() string {
25 text := c.Err.Error()
26 if c.ErrMsg != "" {
27 text = fmt.Sprintf("%s - %s", text, c.ErrMsg)
28 }
29 return text
30}
31
32// AlterConfigsResourceResponse is a response type for alter config resource
33type AlterConfigsResourceResponse struct {
34 ErrorCode int16
35 ErrorMsg string
36 Type ConfigResourceType
37 Name string
38}
39
40func (a *AlterConfigsResponse) encode(pe packetEncoder) error {
41 pe.putDurationMs(a.ThrottleTime)
42
43 if err := pe.putArrayLength(len(a.Resources)); err != nil {
44 return err
45 }
46
47 for _, v := range a.Resources {
48 if err := v.encode(pe); err != nil {
49 return err
50 }
51 }
52
53 return nil
54}
55
56func (a *AlterConfigsResponse) decode(pd packetDecoder, version int16) (err error) {
57 if a.ThrottleTime, err = pd.getDurationMs(); err != nil {
58 return err
59 }
60
61 responseCount, err := pd.getArrayLength()
62 if err != nil {
63 return err
64 }
65
66 a.Resources = make([]*AlterConfigsResourceResponse, responseCount)
67
68 for i := range a.Resources {
69 a.Resources[i] = new(AlterConfigsResourceResponse)
70
71 if err := a.Resources[i].decode(pd, version); err != nil {
72 return err
73 }
74 }
75
76 return nil
77}
78
79func (a *AlterConfigsResourceResponse) encode(pe packetEncoder) error {
80 pe.putInt16(a.ErrorCode)
81 err := pe.putString(a.ErrorMsg)
82 if err != nil {
83 return err
84 }
85 pe.putInt8(int8(a.Type))
86 err = pe.putString(a.Name)
87 if err != nil {
88 return err
89 }
90 pe.putEmptyTaggedFieldArray()
91 return nil
92}
93
94func (a *AlterConfigsResourceResponse) decode(pd packetDecoder, version int16) error {
95 errCode, err := pd.getInt16()
96 if err != nil {
97 return err
98 }
99 a.ErrorCode = errCode
100
101 e, err := pd.getNullableString()
102 if err != nil {
103 return err
104 }
105 if e == nil {
106 a.ErrorMsg = ""
107 } else {
108 a.ErrorMsg = *e
109 }
110
111 t, err := pd.getInt8()
112 if err != nil {
113 return err
114 }
115 a.Type = ConfigResourceType(t)
116
117 name, err := pd.getString()
118 if err != nil {
119 return err
120 }
121 a.Name = name
122
123 _, err = pd.getEmptyTaggedFieldArray()
124 return err
125}
126
127func (a *AlterConfigsResponse) key() int16 {
128 return apiKeyAlterConfigs
129}
130
131func (a *AlterConfigsResponse) version() int16 {
132 return a.Version
133}
134
135func (a *AlterConfigsResponse) headerVersion() int16 {
136 return 0
137}
138
139func (a *AlterConfigsResponse) isValidVersion() bool {
140 return a.Version >= 0 && a.Version <= 1
141}
142
143func (a *AlterConfigsResponse) requiredVersion() KafkaVersion {
144 switch a.Version {
145 case 1:
146 return V2_0_0_0
147 case 0:
148 return V0_11_0_0
149 default:
150 return V2_0_0_0
151 }
152}
153
154func (r *AlterConfigsResponse) throttleTime() time.Duration {
155 return r.ThrottleTime
156}