MCPcopy Index your code
hub / github.com/google/gvisor / WriteFromReaderAndLimitedReader

Method WriteFromReaderAndLimitedReader

pkg/buffer/buffer.go:505–530  ·  view source on GitHub ↗

WriteFromReaderAndLimitedReader is the same as WriteFromReader, but optimized to avoid allocations if a LimitedReader is passed in. This function clobbers the values of lr.

(r io.Reader, count int64, lr *io.LimitedReader)

Source from the content-addressed store, hash-verified

503//
504// This function clobbers the values of lr.
505func (b *Buffer) WriteFromReaderAndLimitedReader(r io.Reader, count int64, lr *io.LimitedReader) (int64, error) {
506 if lr == nil {
507 lr = &io.LimitedReader{}
508 }
509
510 var done int64
511 for done < count {
512 vsize := count - done
513 if vsize > MaxChunkSize {
514 vsize = MaxChunkSize
515 }
516 v := NewView(int(vsize))
517 lr.R = r
518 lr.N = vsize
519 n, err := io.Copy(v, lr)
520 b.Append(v)
521 done += n
522 if err == io.EOF {
523 break
524 }
525 if err != nil {
526 return done, err
527 }
528 }
529 return done, nil
530}
531
532// ReadToWriter reads from the buffer into an io.Writer.
533//

Callers 2

WriteFromReaderMethod · 0.95
readFromPayloaderMethod · 0.95

Calls 3

AppendMethod · 0.95
NewViewFunction · 0.70
CopyMethod · 0.65

Tested by

no test coverage detected