(p []byte)
| 363 | } |
| 364 | |
| 365 | func (w *callbackWriter) Write(p []byte) (n int, err error) { |
| 366 | n, err = w.Writer.Write(p) |
| 367 | if n <= 0 { |
| 368 | return |
| 369 | } |
| 370 | w.written += int64(n) |
| 371 | if w.written == w.totalSize { |
| 372 | w.callback(w.written) |
| 373 | } else if now := time.Now(); now.Sub(w.lastTime) >= w.interval { |
| 374 | w.lastTime = now |
| 375 | w.callback(w.written) |
| 376 | } |
| 377 | return |
| 378 | } |
| 379 | |
| 380 | type callbackReader struct { |
| 381 | io.ReadCloser |