blob: cb9e9244c49d4c05fde7b9982ca17bd954174e31 [file] [log] [blame]
Abhay Kumara2ae5992025-11-10 14:02:24 +00001package sarama
2
3import "time"
4
5type DeleteTopicsRequest struct {
6 Version int16
7 Topics []string
8 Timeout time.Duration
9}
10
11func (d *DeleteTopicsRequest) setVersion(v int16) {
12 d.Version = v
13}
14
15func NewDeleteTopicsRequest(version KafkaVersion, topics []string, timeout time.Duration) *DeleteTopicsRequest {
16 d := &DeleteTopicsRequest{
17 Topics: topics,
18 Timeout: timeout,
19 }
20 if version.IsAtLeast(V2_4_0_0) {
21 d.Version = 4
22 } else if version.IsAtLeast(V2_1_0_0) {
23 d.Version = 3
24 } else if version.IsAtLeast(V2_0_0_0) {
25 d.Version = 2
26 } else if version.IsAtLeast(V0_11_0_0) {
27 d.Version = 1
28 }
29 return d
30}
31
32func (d *DeleteTopicsRequest) encode(pe packetEncoder) error {
33 if err := pe.putStringArray(d.Topics); err != nil {
34 return err
35 }
36 pe.putInt32(int32(d.Timeout / time.Millisecond))
37 pe.putEmptyTaggedFieldArray()
38 return nil
39}
40
41func (d *DeleteTopicsRequest) decode(pd packetDecoder, version int16) (err error) {
42 if d.Topics, err = pd.getStringArray(); err != nil {
43 return err
44 }
45 timeout, err := pd.getInt32()
46 if err != nil {
47 return err
48 }
49 d.Timeout = time.Duration(timeout) * time.Millisecond
50 d.Version = version
51
52 _, err = pd.getEmptyTaggedFieldArray()
53 return err
54}
55
56func (d *DeleteTopicsRequest) key() int16 {
57 return apiKeyDeleteTopics
58}
59
60func (d *DeleteTopicsRequest) version() int16 {
61 return d.Version
62}
63
64func (d *DeleteTopicsRequest) headerVersion() int16 {
65 if d.Version >= 4 {
66 return 2
67 }
68 return 1
69}
70
71func (d *DeleteTopicsRequest) isFlexible() bool {
72 return d.isFlexibleVersion(d.Version)
73}
74
75func (d *DeleteTopicsRequest) isFlexibleVersion(version int16) bool {
76 return version >= 4
77}
78
79func (d *DeleteTopicsRequest) isValidVersion() bool {
80 return d.Version >= 0 && d.Version <= 4
81}
82
83func (d *DeleteTopicsRequest) requiredVersion() KafkaVersion {
84 switch d.Version {
85 case 4:
86 return V2_4_0_0
87 case 3:
88 return V2_1_0_0
89 case 2:
90 return V2_0_0_0
91 case 1:
92 return V0_11_0_0
93 case 0:
94 return V0_10_1_0
95 default:
96 return V2_2_0_0
97 }
98}