package sarama

type OffsetFetchRequest struct {
	ConsumerGroup string
	partitions    map[string][]int32
}

func (r *OffsetFetchRequest) encode(pe packetEncoder) error {
	err := pe.putString(r.ConsumerGroup)
	if err != nil {
		return err
	}
	err = pe.putArrayLength(len(r.partitions))
	if err != nil {
		return err
	}
	for topic, partitions := range r.partitions {
		err = pe.putString(topic)
		if err != nil {
			return err
		}
		pe.putInt32Array(partitions)
	}
	return nil
}

func (r *OffsetFetchRequest) key() int16 {
	return 9
}

func (r *OffsetFetchRequest) version() int16 {
	return 0
}

func (r *OffsetFetchRequest) AddPartition(topic string, partitionID int32) {
	if r.partitions == nil {
		r.partitions = make(map[string][]int32)
	}

	r.partitions[topic] = append(r.partitions[topic], partitionID)
}