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