MCPcopy
hub / github.com/segmentio/kafka-go / decodeMemberAssignments

Function decodeMemberAssignments

describegroups.go:231–282  ·  view source on GitHub ↗

decodeMemberAssignments converts raw assignment bytes to a DescribeGroupsResponseAssignments struct. See https://github.com/apache/kafka/blob/2.4/clients/src/main/java/org/apache/kafka/clients/consumer/internals/ConsumerProtocol.java#L49 for protocol details.

(rawAssignments []byte)

Source from the content-addressed store, hash-verified

229// See https://github.com/apache/kafka/blob/2.4/clients/src/main/java/org/apache/kafka/clients/consumer/internals/ConsumerProtocol.java#L49
230// for protocol details.
231func decodeMemberAssignments(rawAssignments []byte) (DescribeGroupsResponseAssignments, error) {
232 ma := DescribeGroupsResponseAssignments{}
233
234 if len(rawAssignments) == 0 {
235 return ma, nil
236 }
237
238 buf := bytes.NewBuffer(rawAssignments)
239 bufReader := bufio.NewReader(buf)
240 remain := len(rawAssignments)
241
242 var err error
243 var version16 int16
244
245 if remain, err = readInt16(bufReader, remain, &version16); err != nil {
246 return ma, err
247 }
248 ma.Version = int(version16)
249
250 fn := func(r *bufio.Reader, size int) (fnRemain int, fnErr error) {
251 item := GroupMemberTopic{}
252
253 if fnRemain, fnErr = readString(r, size, &item.Topic); fnErr != nil {
254 return
255 }
256
257 partitions := []int32{}
258
259 if fnRemain, fnErr = readInt32Array(r, fnRemain, &partitions); fnErr != nil {
260 return
261 }
262 for _, partition := range partitions {
263 item.Partitions = append(item.Partitions, int(partition))
264 }
265
266 ma.Topics = append(ma.Topics, item)
267 return
268 }
269 if remain, err = readArrayWith(bufReader, remain, fn); err != nil {
270 return ma, err
271 }
272
273 if remain, err = readBytes(bufReader, remain, &ma.UserData); err != nil {
274 return ma, err
275 }
276
277 if remain != 0 {
278 return ma, fmt.Errorf("Got non-zero number of bytes remaining: %d", remain)
279 }
280
281 return ma, nil
282}
283
284// readInt32Array reads an array of int32s. It's adapted from the implementation of
285// readStringArray.

Callers 1

DescribeGroupsMethod · 0.85

Calls 6

readStringFunction · 0.85
readInt32ArrayFunction · 0.85
readArrayWithFunction · 0.85
readBytesFunction · 0.85
readInt16Function · 0.70
NewReaderMethod · 0.65

Tested by

no test coverage detected