ReadExtensibleString reads a varint31 length prefix and that many bytes from r. It then calls the given function to consume those bytes, returning any unconsumed suffix.
(r *Reader, f func(*Reader) error)
| 123 | // bytes from r. It then calls the given function to consume those |
| 124 | // bytes, returning any unconsumed suffix. |
| 125 | func ReadExtensibleString(r *Reader, f func(*Reader) error) (suffix []byte, err error) { |
| 126 | s, err := ReadVarstr31(r) |
| 127 | if err != nil { |
| 128 | return nil, err |
| 129 | } |
| 130 | |
| 131 | sr := NewReader(s) |
| 132 | err = f(sr) |
| 133 | if err != nil { |
| 134 | return nil, err |
| 135 | } |
| 136 | return sr.buf, nil |
| 137 | } |
| 138 | |
| 139 | func WriteVarint31(w io.Writer, val uint64) (int, error) { |
| 140 | if val > math.MaxInt32 { |