WriteFileChunks uploads chunks of r to bs while populating file. It does not upload file.
(ctx context.Context, bs blobserver.StatReceiver, file *Builder, r io.Reader)
| 274 | // WriteFileChunks uploads chunks of r to bs while populating file. |
| 275 | // It does not upload file. |
| 276 | func WriteFileChunks(ctx context.Context, bs blobserver.StatReceiver, file *Builder, r io.Reader) error { |
| 277 | size, spans, err := writeFileChunks(ctx, bs, file, r) |
| 278 | if err != nil { |
| 279 | return err |
| 280 | } |
| 281 | parts := []BytesPart{} |
| 282 | future := newUploadBytesFuture() |
| 283 | addBytesParts(ctx, bs, &parts, spans, future) |
| 284 | future.errc <- nil // Get will still block on addBytesParts' children |
| 285 | if _, err := future.Get(); err != nil { |
| 286 | return err |
| 287 | } |
| 288 | return file.PopulateParts(size, parts) |
| 289 | } |
| 290 | |
| 291 | func writeFileChunks(ctx context.Context, bs blobserver.StatReceiver, file *Builder, r io.Reader) (n int64, spans []span, outerr error) { |
| 292 | src := ¬eEOFReader{r: r} |
no test coverage detected