(p []byte, off int64)
| 485 | } |
| 486 | |
| 487 | func (r *RangeReadReadAtSeeker) ReadAt(p []byte, off int64) (n int, err error) { |
| 488 | if off < 0 || off >= r.ss.GetSize() { |
| 489 | return 0, io.EOF |
| 490 | } |
| 491 | if off == 0 && r.headCache != nil { |
| 492 | return r.headCache.head(p) |
| 493 | } |
| 494 | var rr io.Reader |
| 495 | rr, err = r.getReaderAtOffset(off) |
| 496 | if err != nil { |
| 497 | return 0, err |
| 498 | } |
| 499 | n, err = io.ReadFull(rr, p) |
| 500 | if n > 0 { |
| 501 | off += int64(n) |
| 502 | switch err { |
| 503 | case nil: |
| 504 | r.readerMap.Store(int64(off), rr) |
| 505 | case io.ErrUnexpectedEOF: |
| 506 | err = io.EOF |
| 507 | } |
| 508 | } |
| 509 | return n, err |
| 510 | } |
| 511 | |
| 512 | func (r *RangeReadReadAtSeeker) Seek(offset int64, whence int) (int64, error) { |
| 513 | switch whence { |
no test coverage detected