MCPcopy Create free account
hub / github.com/OpenListTeam/OpenList / NewReadAtSeeker

Function NewReadAtSeeker

internal/stream/stream.go:405–430  ·  view source on GitHub ↗
(ss *SeekableStream, offset int64, forceRange ...bool)

Source from the content-addressed store, hash-verified

403}
404
405func NewReadAtSeeker(ss *SeekableStream, offset int64, forceRange ...bool) (model.File, error) {
406 if cache := ss.GetFile(); cache != nil {
407 _, err := cache.Seek(offset, io.SeekStart)
408 if err != nil {
409 return nil, err
410 }
411 return cache, nil
412 }
413 r := &RangeReadReadAtSeeker{
414 ss: ss,
415 masterOff: offset,
416 }
417 if offset != 0 || utils.IsBool(forceRange...) {
418 if offset < 0 || offset > ss.GetSize() {
419 return nil, errors.New("offset out of range")
420 }
421 reader, err := r.getReaderAtOffset(offset)
422 if err != nil {
423 return nil, err
424 }
425 r.readerMap.Store(int64(offset), reader)
426 } else {
427 r.readerMap.Store(int64(offset), ss)
428 }
429 return r, nil
430}
431
432func NewMultiReaderAt(ss []*SeekableStream) (readerutil.SizeReaderAt, error) {
433 readers := make([]readerutil.SizeReaderAt, 0, len(ss))

Callers 6

getImageFunction · 0.92
makePartFunction · 0.92
getFsFunction · 0.92
makeOptsFunction · 0.92
OpenDownloadFunction · 0.92
NewMultiReaderAtFunction · 0.85

Calls 6

getReaderAtOffsetMethod · 0.95
IsBoolFunction · 0.92
GetFileMethod · 0.65
GetSizeMethod · 0.65
SeekMethod · 0.45
StoreMethod · 0.45

Tested by

no test coverage detected