MCPcopy
hub / github.com/valyala/fasthttp / bigFileReader

Method bigFileReader

fs.go:689–717  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

687}
688
689func (ff *fsFile) bigFileReader() (io.Reader, error) {
690 if ff.f == nil {
691 return nil, errors.New("bug: ff.f must be non-nil in bigFileReader")
692 }
693
694 var r io.Reader
695
696 ff.bigFilesLock.Lock()
697 n := len(ff.bigFiles)
698 if n > 0 {
699 r = ff.bigFiles[n-1]
700 ff.bigFiles = ff.bigFiles[:n-1]
701 }
702 ff.bigFilesLock.Unlock()
703
704 if r != nil {
705 return r, nil
706 }
707
708 f, err := ff.h.filesystem.Open(ff.filename)
709 if err != nil {
710 return nil, fmt.Errorf("cannot open already opened file: %w", err)
711 }
712 return &bigFileReader{
713 f: f,
714 ff: ff,
715 r: f,
716 }, nil
717}
718
719func (ff *fsFile) Release() {
720 if ff.f != nil {

Callers 1

NewReaderMethod · 0.95

Calls 3

OpenMethod · 0.80
LockMethod · 0.65
UnlockMethod · 0.65

Tested by

no test coverage detected