MCPcopy
hub / github.com/coocood/freecache / ReadAt

Method ReadAt

ringbuf.go:62–81  ·  view source on GitHub ↗

read up to len(p), at off of the data stream.

(p []byte, off int64)

Source from the content-addressed store, hash-verified

60
61// read up to len(p), at off of the data stream.
62func (rb *RingBuf) ReadAt(p []byte, off int64) (n int, err error) {
63 if off > rb.end || off < rb.begin {
64 err = ErrOutOfRange
65 return
66 }
67 readOff := rb.getDataOff(off)
68 readEnd := readOff + int(rb.end-off)
69 if readEnd <= len(rb.data) {
70 n = copy(p, rb.data[readOff:readEnd])
71 } else {
72 n = copy(p, rb.data[readOff:])
73 if n < len(p) {
74 n += copy(p[n:], rb.data[:readEnd-len(rb.data)])
75 }
76 }
77 if n < len(p) {
78 err = io.EOF
79 }
80 return
81}
82
83func (rb *RingBuf) getDataOff(off int64) int {
84 var dataOff int

Callers 9

TestRingBufFunction · 0.95
setMethod · 0.80
touchMethod · 0.80
evacuateMethod · 0.80
getMethod · 0.80
locateMethod · 0.80
ttlMethod · 0.80
delEntryPtrMethod · 0.80
nextForSlotMethod · 0.80

Calls 1

getDataOffMethod · 0.95

Tested by 1

TestRingBufFunction · 0.76