MCPcopy
hub / github.com/containerd/containerd / Transfer

Method Transfer

core/transfer/local/transfer.go:68–100  ·  view source on GitHub ↗
(ctx context.Context, src any, dest any, opts ...transfer.Opt)

Source from the content-addressed store, hash-verified

66}
67
68func (ts *localTransferService) Transfer(ctx context.Context, src any, dest any, opts ...transfer.Opt) error {
69 topts := &transfer.Config{}
70 for _, opt := range opts {
71 opt(topts)
72 }
73
74 // Figure out matrix of whether source destination combination is supported
75 switch s := src.(type) {
76 case transfer.ImageFetcher:
77 switch d := dest.(type) {
78 case transfer.ImageStorer:
79 return ts.pull(ctx, s, d, topts)
80 }
81 case transfer.ImageGetter:
82 switch d := dest.(type) {
83 case transfer.ImagePusher:
84 return ts.push(ctx, s, d, topts)
85 case transfer.ImageExporter:
86 return ts.exportStream(ctx, s, d, topts)
87 case transfer.ImageStorer:
88 return ts.tag(ctx, s, d, topts)
89 }
90 case transfer.ImageImporter:
91 switch d := dest.(type) {
92 case transfer.ImageExportStreamer:
93 return ts.echo(ctx, s, d, topts)
94 case transfer.ImageStorer:
95 // TODO: verify imports with ImageVerifiers?
96 return ts.importStream(ctx, s, d, topts)
97 }
98 }
99 return fmt.Errorf("unable to transfer from %s to %s: %w", name(src), name(dest), errdefs.ErrNotImplemented)
100}
101
102func name(t any) string {
103 switch s := t.(type) {

Callers

nothing calls this directly

Calls 7

pullMethod · 0.95
pushMethod · 0.95
exportStreamMethod · 0.95
tagMethod · 0.95
echoMethod · 0.95
importStreamMethod · 0.95
nameFunction · 0.85

Tested by

no test coverage detected