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
}