echo is mostly used for testing, it implements an import->export which is a no-op which only roundtrips the bytes.
(ctx context.Context, i transfer.ImageImporter, e transfer.ImageExportStreamer, tops *transfer.Config)
| 113 | // echo is mostly used for testing, it implements an import->export which is |
| 114 | // a no-op which only roundtrips the bytes. |
| 115 | func (ts *localTransferService) echo(ctx context.Context, i transfer.ImageImporter, e transfer.ImageExportStreamer, tops *transfer.Config) error { |
| 116 | iis, ok := i.(transfer.ImageImportStreamer) |
| 117 | if !ok { |
| 118 | return fmt.Errorf("echo requires access to raw stream: %w", errdefs.ErrNotImplemented) |
| 119 | } |
| 120 | r, _, err := iis.ImportStream(ctx) |
| 121 | if err != nil { |
| 122 | return err |
| 123 | } |
| 124 | wc, _, err := e.ExportStream(ctx) |
| 125 | if err != nil { |
| 126 | return err |
| 127 | } |
| 128 | |
| 129 | // TODO: Use fixed buffer? Send write progress? |
| 130 | _, err = io.Copy(wc, r) |
| 131 | if werr := wc.Close(); werr != nil && err == nil { |
| 132 | err = werr |
| 133 | } |
| 134 | return err |
| 135 | } |
| 136 | |
| 137 | // WithLease attaches a lease on the context |
| 138 | func (ts *localTransferService) withLease(ctx context.Context, opts ...leases.Opt) (context.Context, func(context.Context) error, error) { |
no test coverage detected