func()

in list_groups_response.go [56:137]


func (r *ListGroupsResponse) decode(pd packetDecoder, version int16) error {
	r.Version = version
	if r.Version >= 1 {
		var err error
		if r.ThrottleTime, err = pd.getInt32(); err != nil {
			return err
		}
	}

	kerr, err := pd.getInt16()
	if err != nil {
		return err
	}

	r.Err = KError(kerr)

	var n int
	if r.Version <= 2 {
		n, err = pd.getArrayLength()
	} else {
		n, err = pd.getCompactArrayLength()
	}
	if err != nil {
		return err
	}

	for i := 0; i < n; i++ {
		if i == 0 {
			r.Groups = make(map[string]string)
			if r.Version >= 4 {
				r.GroupsData = make(map[string]GroupData)
			}
		}

		var groupId, protocolType string
		if r.Version <= 2 {
			groupId, err = pd.getString()
			if err != nil {
				return err
			}
			protocolType, err = pd.getString()
			if err != nil {
				return err
			}
		} else {
			groupId, err = pd.getCompactString()
			if err != nil {
				return err
			}
			protocolType, err = pd.getCompactString()
			if err != nil {
				return err
			}
		}

		r.Groups[groupId] = protocolType

		if r.Version >= 4 {
			groupState, err := pd.getCompactString()
			if err != nil {
				return err
			}
			r.GroupsData[groupId] = GroupData{
				GroupState: groupState,
			}
		}

		if r.Version >= 3 {
			if _, err = pd.getEmptyTaggedFieldArray(); err != nil {
				return err
			}
		}
	}

	if r.Version >= 3 {
		if _, err = pd.getEmptyTaggedFieldArray(); err != nil {
			return err
		}
	}

	return nil
}