func ReadNextFull()

in protocol.go [48:95]


func ReadNextFull(writeTo *bytes.Buffer, r *bufio.Reader) error {
	line, err := r.ReadSlice('\n')
	if err != nil {
		return err
	}
	writeTo.Write(line)
	line = line[:len(line)-2]
	switch line[0] {

	case MessageError:
		return nil
	case MessageStatus:
		return nil
	case MessageInt:
		return nil

	case MessageBulk:
		l, err := strconv.ParseInt(string(line[1:]), 10, 64)
		if err != nil {
			return err
		}

		if l < 0 {
			return nil
		}

		_, err = writeTo.ReadFrom(io.LimitReader(r, l+2))
		return err

	case MessageMutli:
		l, err := strconv.Atoi(string(line[1:]))
		if err != nil {
			return err
		}

		if l < 0 {
			return nil
		}
		for i := 0; i < l; i++ {
			if err := ReadNextFull(writeTo, r); err != nil {
				return err
			}
		}
		return nil
	}

	return errors.New("redplex/protocol: received illegal data from redis")
}