| 217 | } |
| 218 | |
| 219 | func (rb *RingBuf) Resize(newSize int) { |
| 220 | if len(rb.data) == newSize { |
| 221 | return |
| 222 | } |
| 223 | newData := make([]byte, newSize) |
| 224 | var offset int |
| 225 | if rb.end-rb.begin == int64(len(rb.data)) { |
| 226 | offset = rb.index |
| 227 | } |
| 228 | if int(rb.end-rb.begin) > newSize { |
| 229 | discard := int(rb.end-rb.begin) - newSize |
| 230 | offset = (offset + discard) % len(rb.data) |
| 231 | rb.begin = rb.end - int64(newSize) |
| 232 | } |
| 233 | n := copy(newData, rb.data[offset:]) |
| 234 | if n < newSize { |
| 235 | copy(newData[n:], rb.data[:offset]) |
| 236 | } |
| 237 | rb.data = newData |
| 238 | rb.index = 0 |
| 239 | } |
| 240 | |
| 241 | func (rb *RingBuf) Skip(length int64) { |
| 242 | rb.end += length |