(n int)
| 211 | } |
| 212 | |
| 213 | func (b *buffer) split(n int) (Buffer, Buffer) { |
| 214 | if b.rootBuf == nil || b.rootBuf.refs.Add(1) <= 1 { |
| 215 | panic("Cannot split freed buffer") |
| 216 | } |
| 217 | |
| 218 | split := newBuffer() |
| 219 | split.data = b.data[n:] |
| 220 | split.rootBuf = b.rootBuf |
| 221 | split.refs.Store(1) |
| 222 | |
| 223 | b.data = b.data[:n] |
| 224 | |
| 225 | return b, split |
| 226 | } |
| 227 | |
| 228 | func (b *buffer) read(buf []byte) (int, Buffer) { |
| 229 | if b.rootBuf == nil { |