func ParseRequest()

in protocol.go [190:226]


func ParseRequest(r *bufio.Reader) (method string, args [][]byte, err error) {
	line, err := r.ReadSlice('\n')
	if err != nil {
		return "", nil, err
	}

	n, err := strconv.Atoi(string(line[1 : len(line)-2]))
	if err != nil {
		return "", nil, err
	}

	if n < 0 {
		return "", nil, nil
	}

	buffer := bytes.NewBuffer(nil)
	for i := 0; i < n; i++ {
		if err := ReadNextFull(buffer, r); err != nil {
			return "", nil, err
		}

		msg, err := ParseBulkMessage(buffer.Bytes())
		if err != nil {
			return "", nil, err
		}

		if method == "" {
			method = strings.ToLower(string(msg))
		} else {
			args = append(args, copyBytes(msg))
		}

		buffer.Reset()
	}

	return method, args, nil
}