MCPcopy Create free account
hub / github.com/containerd/containerd / NewTransferrer

Function NewTransferrer

core/transfer/proxy/transfer.go:51–78  ·  view source on GitHub ↗

NewTransferrer returns a new transferrer which can communicate over a GRPC or TTRPC connection using the containerd transfer API

(client any, sc streaming.StreamCreator)

Source from the content-addressed store, hash-verified

49// NewTransferrer returns a new transferrer which can communicate over a GRPC
50// or TTRPC connection using the containerd transfer API
51func NewTransferrer(client any, sc streaming.StreamCreator) transfer.Transferrer {
52 switch c := client.(type) {
53 case transferapi.TransferClient:
54 return &proxyTransferrer{
55 client: convertClient{c},
56 streamCreator: sc,
57 }
58 case grpc.ClientConnInterface:
59 return &proxyTransferrer{
60 client: convertClient{transferapi.NewTransferClient(c)},
61 streamCreator: sc,
62 }
63 case transferapi.TTRPCTransferService:
64 return &proxyTransferrer{
65 client: c,
66 streamCreator: sc,
67 }
68 case *ttrpc.Client:
69 return &proxyTransferrer{
70 client: transferapi.NewTTRPCTransferClient(c),
71 streamCreator: sc,
72 }
73 case transfer.Transferrer:
74 return c
75 default:
76 panic(fmt.Errorf("unsupported stream client %T: %w", client, errdefs.ErrNotImplemented))
77 }
78}
79
80type convertClient struct {
81 transferapi.TransferClient

Callers 1

TransferMethod · 0.92

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…