blob: 4b53f0beb0a8eeb496ee14c5d59b1e1b100dc53e [file] [log] [blame]
Abhay Kumar40252eb2025-10-13 13:25:53 +00001package sarama
2
3import (
4 "time"
5)
6
7type DeleteTopicsResponse struct {
8 Version int16
9 ThrottleTime time.Duration
10 TopicErrorCodes map[string]KError
11}
12
13func (d *DeleteTopicsResponse) setVersion(v int16) {
14 d.Version = v
15}
16
17func (d *DeleteTopicsResponse) encode(pe packetEncoder) error {
18 if d.Version >= 1 {
19 pe.putDurationMs(d.ThrottleTime)
20 }
21
22 if err := pe.putArrayLength(len(d.TopicErrorCodes)); err != nil {
23 return err
24 }
25 for topic, errorCode := range d.TopicErrorCodes {
26 if err := pe.putString(topic); err != nil {
27 return err
28 }
29 pe.putKError(errorCode)
30 pe.putEmptyTaggedFieldArray()
31 }
32
33 pe.putEmptyTaggedFieldArray()
34 return nil
35}
36
37func (d *DeleteTopicsResponse) decode(pd packetDecoder, version int16) (err error) {
38 if version >= 1 {
39 if d.ThrottleTime, err = pd.getDurationMs(); err != nil {
40 return err
41 }
42
43 d.Version = version
44 }
45
46 n, err := pd.getArrayLength()
47 if err != nil {
48 return err
49 }
50
51 d.TopicErrorCodes = make(map[string]KError, n)
52
53 for i := 0; i < n; i++ {
54 topic, err := pd.getString()
55 if err != nil {
56 return err
57 }
58 d.TopicErrorCodes[topic], err = pd.getKError()
59 if err != nil {
60 return err
61 }
62
63 if _, err := pd.getEmptyTaggedFieldArray(); err != nil {
64 return err
65 }
66 }
67
68 _, err = pd.getEmptyTaggedFieldArray()
69 return err
70}
71
72func (d *DeleteTopicsResponse) key() int16 {
73 return apiKeyDeleteTopics
74}
75
76func (d *DeleteTopicsResponse) version() int16 {
77 return d.Version
78}
79
80func (d *DeleteTopicsResponse) headerVersion() int16 {
81 if d.Version >= 4 {
82 return 1
83 }
84 return 0
85}
86
87func (d *DeleteTopicsResponse) isFlexible() bool {
88 return d.isFlexibleVersion(d.Version)
89}
90
91func (d *DeleteTopicsResponse) isFlexibleVersion(version int16) bool {
92 return version >= 4
93}
94
95func (d *DeleteTopicsResponse) isValidVersion() bool {
96 return d.Version >= 0 && d.Version <= 4
97}
98
99func (d *DeleteTopicsResponse) requiredVersion() KafkaVersion {
100 switch d.Version {
101 case 4:
102 return V2_4_0_0
103 case 3:
104 return V2_1_0_0
105 case 2:
106 return V2_0_0_0
107 case 1:
108 return V0_11_0_0
109 case 0:
110 return V0_10_1_0
111 default:
112 return V2_2_0_0
113 }
114}
115
116func (r *DeleteTopicsResponse) throttleTime() time.Duration {
117 return r.ThrottleTime
118}