aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main.go19
1 files changed, 19 insertions, 0 deletions
diff --git a/main.go b/main.go
index 5db75f3..a2ace56 100644
--- a/main.go
+++ b/main.go
@@ -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