(p []byte)
| 30 | } |
| 31 | |
| 32 | func (progressReader *ProgressReader) Read(p []byte) (int, error) { |
| 33 | if progressReader.ioReadSeeker == nil { |
| 34 | return 0, os.ErrInvalid |
| 35 | } |
| 36 | |
| 37 | n, err := progressReader.ioReadSeeker.Read(p) |
| 38 | |
| 39 | if progressReader.total > int64(0) { |
| 40 | if n > 0 { |
| 41 | if progressReader.quit == nil { |
| 42 | progressReader.quit = make(chan bool) |
| 43 | go progressReader.printProgress(progressReader.quit) |
| 44 | } |
| 45 | |
| 46 | progressReader.mutex.Lock() |
| 47 | progressReader.bytesRead += int64(n) |
| 48 | progressReader.mutex.Unlock() |
| 49 | |
| 50 | if progressReader.total == progressReader.bytesRead { |
| 51 | progressReader.quit <- true |
| 52 | return n, err |
| 53 | } |
| 54 | } |
| 55 | } |
| 56 | |
| 57 | return n, err |
| 58 | } |
| 59 | |
| 60 | func (progressReader *ProgressReader) Seek(offset int64, whence int) (int64, error) { |
| 61 | return progressReader.ioReadSeeker.Seek(offset, whence) |
nothing calls this directly
no test coverage detected