From 37895517bd2d86278fc9ff46e5f6766b7e851ea5 Mon Sep 17 00:00:00 2001 From: Jordan Orelli Date: Thu, 7 Aug 2014 20:01:35 +0000 Subject: [PATCH] remove a little bit of waffling in arrays --- values.go | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/values.go b/values.go index 6cf574c..502d1f9 100644 --- a/values.go +++ b/values.go @@ -80,7 +80,7 @@ func readValue(r io.Reader) (value, error) { case *bufio.Reader: br = t default: - br = bufio.NewReader(r) + br = bufio.NewReaderSize(r, 65536) } line, err := br.ReadBytes('\n') @@ -112,8 +112,7 @@ func readValue(r io.Reader) (value, error) { case start_bulkstring: return readBulkString(line, br) case start_array: - line = line[:len(line)-2] - return readArray(line[1:], br) + return readArray(line, br) default: return nil, fmt.Errorf("unable to read redis protocol value: illegal start character: %c", line[0]) } @@ -226,7 +225,7 @@ func (s BulkStringVal) Write(w io.Writer) (int, error) { type Array []byte func readArray(prefix []byte, r *bufio.Reader) (value, error) { - n, err := strconv.Atoi(string(prefix)) + n, err := strconv.Atoi(string(prefix[1 : len(prefix)-2])) if err != nil { return nil, fmt.Errorf("unable to read array in redis protocol: bad prefix: %v", err) } @@ -239,9 +238,7 @@ func readArray(prefix []byte, r *bufio.Reader) (value, error) { } buf := bytes.NewBuffer(make([]byte, 0, n*128)) - buf.Write([]byte{'*'}) - buf.Write([]byte(strconv.Itoa(n))) - buf.Write([]byte{'\r', '\n'}) + buf.Write(prefix) for i := 0; i < n; i++ { v, err := readValue(r) if err != nil { @@ -253,6 +250,5 @@ func readArray(prefix []byte, r *bufio.Reader) (value, error) { } func (a Array) Write(w io.Writer) (int, error) { - w.Write(a) - return 0, nil + return w.Write(a) }