diff options
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 19 |
1 files changed, 19 insertions, 0 deletions
@@ -172,7 +172,26 @@ func parseRESP(reader *bufio.Reader) ([]string, error) { args = append(args, string(buf)) } return args, nil + case '$': + strLen, _ := strconv.Atoi(strings.TrimSpace(line[1:])) + if strLen == -1 { + return []string{""}, nil + } + + buf := make([]byte, strLen) + + _, err = io.ReadFull(reader, buf) + if err != nil { + return nil, err + } + + _, err = reader.Discard(2) + if err != nil { + return nil, err + } + + return []string{string(buf)}, nil case '+': cleanStr := strings.TrimSpace(line[1:]) return []string{cleanStr}, nil |
