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