in metadata_response.go [150:219]
func (t *TopicMetadata) decode(pd packetDecoder, version int16) (err error) {
t.Version = version
tmp, err := pd.getInt16()
if err != nil {
return err
}
t.Err = KError(tmp)
if t.Version < 9 {
t.Name, err = pd.getString()
} else {
t.Name, err = pd.getCompactString()
}
if err != nil {
return err
}
if t.Version >= 10 {
uuid, err := pd.getRawBytes(16)
if err != nil {
return err
}
t.Uuid = [16]byte{}
for i := 0; i < 16; i++ {
t.Uuid[i] = uuid[i]
}
}
if t.Version >= 1 {
t.IsInternal, err = pd.getBool()
if err != nil {
return err
}
}
var n int
if t.Version < 9 {
n, err = pd.getArrayLength()
} else {
n, err = pd.getCompactArrayLength()
}
if err != nil {
return err
} else {
t.Partitions = make([]*PartitionMetadata, n)
for i := 0; i < n; i++ {
block := &PartitionMetadata{}
if err := block.decode(pd, t.Version); err != nil {
return err
}
t.Partitions[i] = block
}
}
if t.Version >= 8 {
t.TopicAuthorizedOperations, err = pd.getInt32()
if err != nil {
return err
}
}
if t.Version >= 9 {
_, err = pd.getEmptyTaggedFieldArray()
if err != nil {
return err
}
}
return nil
}