@@ -464,41 +464,20 @@ func (dc *DataChunk) GetParent() Manager {
464464 return dc .manager
465465}
466466
467- // WriteTo Used to hook all traffic.
468- func (dc * DataChunk ) WriteTo (w io.Writer ) (written int64 , err error ) {
469- nw := 0
470- nr := readChunkSize
471- for {
472- dc .manager .runningRW .RLock ()
473- running := dc .manager .running
474- dc .manager .runningRW .RUnlock ()
475- if ! running || dc .remainOrDiscardSize <= 0 {
467+ func (dc * DataChunk ) Read (b []byte ) (n int , err error ) {
468+ if dc .remainOrDiscardSize < readChunkSize {
469+ if dc .remainOrDiscardSize <= 0 {
476470 dc .endTime = time .Now ()
477- return written , io .EOF
478- }
479- if dc .remainOrDiscardSize < readChunkSize {
480- nr = int (dc .remainOrDiscardSize )
481- nw , err = w .Write ((* dc .manager .repeatByte )[:nr ])
482- } else {
483- nw , err = w .Write (* dc .manager .repeatByte )
484- }
485- if err != nil {
486- return
487- }
488- n64 := int64 (nw )
489- written += n64
490- dc .remainOrDiscardSize -= n64
491- dc .manager .AddTotalUpload (n64 )
492- if nr != nw {
493- return written , io .ErrShortWrite
471+ return n , io .EOF
494472 }
473+ n = copy (b , (* dc .manager .repeatByte )[:dc .remainOrDiscardSize ])
474+ } else {
475+ n = copy (b , * dc .manager .repeatByte )
495476 }
496- }
497-
498- // Please don't call it, only used to wrapped by [io.NopCloser]
499- // We use [DataChunk.WriteTo] that implements [io.WriterTo] to bypass this function.
500- func (dc * DataChunk ) Read (b []byte ) (n int , err error ) {
501- panic ("unexpected call: only used to implement the io.Reader" )
477+ n64 := int64 (n )
478+ dc .remainOrDiscardSize -= n64
479+ dc .manager .AddTotalUpload (n64 )
480+ return
502481}
503482
504483// calcMAFilter Median-Averaging Filter
0 commit comments