func (r *record) read() ([]byte, error) { r.once.Do(func() { if !r.compressed { if r.s != "" { r.data = []byte(r.s) r.s = "" } return } var in io.Reader if r.s != "" { in = strings.NewReader(r.s) r.s = "" } else { in = bytes.NewReader(r.data) } z, err := zlib.NewReader(in) if err != nil { r.data, r.err = nil, err return } p := packed.NewReader(bufio.NewReader(z)) r.data, r.err = ioutil.ReadAll(p) if err != nil { r.data = nil return } }) return r.data, r.err }
// NewPackedDecoder creates a new Cap'n Proto framer that reads from a // packed stream r. func NewPackedDecoder(r io.Reader) *Decoder { return NewDecoder(packed.NewReader(r)) }