(b []byte)
| 46 | } |
| 47 | |
| 48 | func (w *slowWriter) Write(b []byte) (n int, err error) { |
| 49 | written := 0 |
| 50 | for written < len(b) { |
| 51 | w.bucket.Wait(blockSize) |
| 52 | |
| 53 | upper := int64(written) + blockSize |
| 54 | if upper > int64(len(b)) { |
| 55 | upper = int64(len(b)) |
| 56 | } |
| 57 | n, err := w.writer.Write(b[written:upper]) |
| 58 | written += n |
| 59 | if err != nil { |
| 60 | return written, err |
| 61 | } |
| 62 | } |
| 63 | return written, nil |
| 64 | } |
| 65 | |
| 66 | // SlowConn is a slow connection |
| 67 | type SlowConn struct { |