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
}