in metadata_response.go [286:364]
func (r *MetadataResponse) decode(pd packetDecoder, version int16) (err error) {
r.Version = version
if r.Version >= 3 {
if r.ThrottleTimeMs, err = pd.getInt32(); err != nil {
return err
}
}
var brokerArrayLen int
if r.Version < 9 {
brokerArrayLen, err = pd.getArrayLength()
} else {
brokerArrayLen, err = pd.getCompactArrayLength()
}
if err != nil {
return err
}
r.Brokers = make([]*Broker, brokerArrayLen)
for i := 0; i < brokerArrayLen; i++ {
r.Brokers[i] = new(Broker)
err = r.Brokers[i].decode(pd, version)
if err != nil {
return err
}
}
if r.Version >= 2 {
if r.Version < 9 {
r.ClusterID, err = pd.getNullableString()
} else {
r.ClusterID, err = pd.getCompactNullableString()
}
if err != nil {
return err
}
}
if r.Version >= 1 {
if r.ControllerID, err = pd.getInt32(); err != nil {
return err
}
}
var topicArrayLen int
if version < 9 {
topicArrayLen, err = pd.getArrayLength()
} else {
topicArrayLen, err = pd.getCompactArrayLength()
}
if err != nil {
return err
}
r.Topics = make([]*TopicMetadata, topicArrayLen)
for i := 0; i < topicArrayLen; i++ {
r.Topics[i] = new(TopicMetadata)
err = r.Topics[i].decode(pd, version)
if err != nil {
return err
}
}
if r.Version >= 8 {
r.ClusterAuthorizedOperations, err = pd.getInt32()
if err != nil {
return err
}
}
if r.Version >= 9 {
_, err := pd.getEmptyTaggedFieldArray()
if err != nil {
return err
}
}
return nil
}