func()

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
}