Skip to content

Commit a153940

Browse files
Revert "Simplify member metadata"
This reverts commit fed2c53.
1 parent 1d9a9a4 commit a153940

File tree

1 file changed

+54
-6
lines changed

1 file changed

+54
-6
lines changed

describegroups.go

Lines changed: 54 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,24 @@ type DescribeGroupsResponseMember struct {
4949
ClientHost string
5050

5151
// MemberMetadata contains metadata about this group member.
52-
MemberMetadata []byte
52+
MemberMetadata DescribeGroupsResponseMemberMetadata
5353

5454
// MemberAssignments contains the topic partitions that this member is assigned to.
5555
MemberAssignments DescribeGroupsResponseAssignments
5656
}
5757

58+
// GroupMemberMetadata stores metadata associated with a group member.
59+
type DescribeGroupsResponseMemberMetadata struct {
60+
// Version is the version of the metadata.
61+
Version int
62+
63+
// Topics is the list of topics that the member is assigned to.
64+
Topics []string
65+
66+
// UserData is the user data for the member.
67+
UserData []byte
68+
}
69+
5870
// GroupMemberAssignmentsInfo stores the topic partition assignment data for a group member.
5971
type DescribeGroupsResponseAssignments struct {
6072
// Version is the version of the assignments data.
@@ -104,6 +116,10 @@ func (c *Client) DescribeGroups(
104116
}
105117

106118
for _, member := range apiGroup.Members {
119+
decodedMetadata, err := decodeMemberMetadata(member.MemberMetadata)
120+
if err != nil {
121+
return nil, err
122+
}
107123
decodedAssignments, err := decodeMemberAssignments(member.MemberAssignment)
108124
if err != nil {
109125
return nil, err
@@ -114,7 +130,7 @@ func (c *Client) DescribeGroups(
114130
ClientID: member.ClientID,
115131
ClientHost: member.ClientHost,
116132
MemberAssignments: decodedAssignments,
117-
MemberMetadata: member.MemberMetadata,
133+
MemberMetadata: decodedMetadata,
118134
})
119135
}
120136
resp.Groups = append(resp.Groups, group)
@@ -298,6 +314,41 @@ func (t *describeGroupsResponseV0) readFrom(r *bufio.Reader, sz int) (remain int
298314
return
299315
}
300316

317+
// decodeMemberMetadata converts raw metadata bytes to a
318+
// DescribeGroupsResponseMemberMetadata struct.
319+
func decodeMemberMetadata(rawMetadata []byte) (DescribeGroupsResponseMemberMetadata, error) {
320+
mm := DescribeGroupsResponseMemberMetadata{}
321+
322+
if len(rawMetadata) == 0 {
323+
return mm, nil
324+
}
325+
326+
buf := bytes.NewBuffer(rawMetadata)
327+
bufReader := bufio.NewReader(buf)
328+
remain := len(rawMetadata)
329+
330+
var err error
331+
var version16 int16
332+
333+
if remain, err = readInt16(bufReader, remain, &version16); err != nil {
334+
return mm, err
335+
}
336+
mm.Version = int(version16)
337+
338+
if remain, err = readStringArray(bufReader, remain, &mm.Topics); err != nil {
339+
return mm, err
340+
}
341+
if remain, err = readBytes(bufReader, remain, &mm.UserData); err != nil {
342+
return mm, err
343+
}
344+
345+
if remain != 0 {
346+
return mm, fmt.Errorf("Got non-zero number of bytes remaining: %d", remain)
347+
}
348+
349+
return mm, nil
350+
}
351+
301352
// decodeMemberAssignments converts raw assignment bytes to a DescribeGroupsResponseAssignments
302353
// struct.
303354
//
@@ -350,10 +401,7 @@ func decodeMemberAssignments(rawAssignments []byte) (DescribeGroupsResponseAssig
350401
}
351402

352403
if remain != 0 {
353-
return ma, fmt.Errorf(
354-
"Got non-zero number of bytes remaining in member assignments: %d",
355-
remain,
356-
)
404+
return ma, fmt.Errorf("Got non-zero number of bytes remaining: %d", remain)
357405
}
358406

359407
return ma, nil

0 commit comments

Comments
 (0)