func()

in offset_fetch_response.go [85:135]


func (r *OffsetFetchResponse) encode(pe packetEncoder) (err error) {
	isFlexible := r.Version >= 6

	if r.Version >= 3 {
		pe.putInt32(r.ThrottleTimeMs)
	}
	if isFlexible {
		pe.putCompactArrayLength(len(r.Blocks))
	} else {
		err = pe.putArrayLength(len(r.Blocks))
	}
	if err != nil {
		return err
	}

	for topic, partitions := range r.Blocks {
		if isFlexible {
			err = pe.putCompactString(topic)
		} else {
			err = pe.putString(topic)
		}
		if err != nil {
			return err
		}

		if isFlexible {
			pe.putCompactArrayLength(len(partitions))
		} else {
			err = pe.putArrayLength(len(partitions))
		}
		if err != nil {
			return err
		}
		for partition, block := range partitions {
			pe.putInt32(partition)
			if err := block.encode(pe, r.Version); err != nil {
				return err
			}
		}
		if isFlexible {
			pe.putEmptyTaggedFieldArray()
		}
	}
	if r.Version >= 2 {
		pe.putInt16(int16(r.Err))
	}
	if isFlexible {
		pe.putEmptyTaggedFieldArray()
	}
	return nil
}