blob: 8fd10eac9c0c90699a221ef2a9ab5670dc6b7ab0 [file] [log] [blame]
Abhay Kumara2ae5992025-11-10 14:02:24 +00001package sarama
2
3type DeleteOffsetsRequest struct {
4 Version int16
5 Group string
6 partitions map[string][]int32
7}
8
9func (r *DeleteOffsetsRequest) setVersion(v int16) {
10 r.Version = v
11}
12
13func (r *DeleteOffsetsRequest) encode(pe packetEncoder) (err error) {
14 err = pe.putString(r.Group)
15 if err != nil {
16 return err
17 }
18
19 if r.partitions == nil {
20 pe.putInt32(0)
21 } else {
22 if err = pe.putArrayLength(len(r.partitions)); err != nil {
23 return err
24 }
25 }
26 for topic, partitions := range r.partitions {
27 err = pe.putString(topic)
28 if err != nil {
29 return err
30 }
31 err = pe.putInt32Array(partitions)
32 if err != nil {
33 return err
34 }
35 }
36 return
37}
38
39func (r *DeleteOffsetsRequest) decode(pd packetDecoder, version int16) (err error) {
40 r.Group, err = pd.getString()
41 if err != nil {
42 return err
43 }
44 var partitionCount int
45
46 partitionCount, err = pd.getArrayLength()
47 if err != nil {
48 return err
49 }
50
51 if (partitionCount == 0 && version < 2) || partitionCount < 0 {
52 return nil
53 }
54
55 r.partitions = make(map[string][]int32, partitionCount)
56 for i := 0; i < partitionCount; i++ {
57 var topic string
58 topic, err = pd.getString()
59 if err != nil {
60 return err
61 }
62
63 var partitions []int32
64 partitions, err = pd.getInt32Array()
65 if err != nil {
66 return err
67 }
68
69 r.partitions[topic] = partitions
70 }
71
72 return nil
73}
74
75func (r *DeleteOffsetsRequest) key() int16 {
76 return apiKeyOffsetDelete
77}
78
79func (r *DeleteOffsetsRequest) version() int16 {
80 return r.Version
81}
82
83func (r *DeleteOffsetsRequest) headerVersion() int16 {
84 return 1
85}
86
87func (r *DeleteOffsetsRequest) isValidVersion() bool {
88 return r.Version == 0
89}
90
91func (r *DeleteOffsetsRequest) requiredVersion() KafkaVersion {
92 return V2_4_0_0
93}
94
95func (r *DeleteOffsetsRequest) AddPartition(topic string, partitionID int32) {
96 if r.partitions == nil {
97 r.partitions = make(map[string][]int32)
98 }
99
100 r.partitions[topic] = append(r.partitions[topic], partitionID)
101}