@@ -156,6 +156,22 @@ func (c *Client) DescribeGroups(
156
156
return resp , nil
157
157
}
158
158
159
+ func (t * DescribeGroupsResponseMemberMetadataOwnedPartition ) readFrom (r * bufio.Reader , size int ) (remain int , err error ) {
160
+ if remain , err = readString (r , size , & t .Topic ); err != nil {
161
+ return
162
+ }
163
+ partitions := []int32 {}
164
+
165
+ if remain , err = readInt32Array (r , remain , & partitions ); err != nil {
166
+ return
167
+ }
168
+ for _ , partition := range partitions {
169
+ t .Partitions = append (t .Partitions , int (partition ))
170
+ }
171
+
172
+ return
173
+ }
174
+
159
175
// decodeMemberMetadata converts raw metadata bytes to a
160
176
// DescribeGroupsResponseMemberMetadata struct.
161
177
//
@@ -187,26 +203,33 @@ func decodeMemberMetadata(rawMetadata []byte) (DescribeGroupsResponseMemberMetad
187
203
return mm , err
188
204
}
189
205
190
- /*
191
- if mm.Version == 1 {
192
- fn := func(r *bufio.Reader, size int) (fnRemain int, fnErr error) {
193
- //item := DescribeGroupsResponseMemberMetadataOwnedPartition{}
194
- //if fnRemain, fnErr = (&item).readFrom(r, size); fnErr != nil {
195
- // return
196
- //}
197
- //mm.OwnedPartitions = append(mm.OwnedPartitions, item)
206
+ if mm .Version == 1 && remain > 0 {
207
+ fn := func (r * bufio.Reader , size int ) (fnRemain int , fnErr error ) {
208
+ op := DescribeGroupsResponseMemberMetadataOwnedPartition {}
209
+ if fnRemain , fnErr = readString (r , size , & op .Topic ); fnErr != nil {
198
210
return
199
211
}
212
+ ps := []int32 {}
200
213
201
- if remain, err = readArrayWith(bufReader, remain, fn); err != nil {
202
- return mm, err
214
+ if fnRemain , fnErr = readInt32Array (r , remain , & ps ); fnErr != nil {
215
+ return
216
+ }
217
+ for _ , p := range ps {
218
+ op .Partitions = append (op .Partitions , int (p ))
203
219
}
220
+
221
+ mm .OwnedPartitions = append (mm .OwnedPartitions , op )
222
+ return
204
223
}
205
- */
206
224
207
- //if remain != 0 {
208
- // return mm, fmt.Errorf("Got non-zero number of bytes remaining: %d", remain)
209
- //}
225
+ if remain , err = readArrayWith (bufReader , remain , fn ); err != nil {
226
+ return mm , err
227
+ }
228
+ }
229
+
230
+ if remain != 0 {
231
+ return mm , fmt .Errorf ("Got non-zero number of bytes remaining: %d" , remain )
232
+ }
210
233
211
234
return mm , nil
212
235
}
0 commit comments