MCPcopy
hub / github.com/containerd/containerd / Subscribe

Method Subscribe

client/events.go:80–125  ·  view source on GitHub ↗
(ctx context.Context, filters ...string)

Source from the content-addressed store, hash-verified

78}
79
80func (e *eventRemote) Subscribe(ctx context.Context, filters ...string) (ch <-chan *events.Envelope, errs <-chan error) {
81 var (
82 evq = make(chan *events.Envelope)
83 errq = make(chan error, 1)
84 )
85
86 errs = errq
87 ch = evq
88
89 session, err := e.client.Subscribe(ctx, &eventsapi.SubscribeRequest{
90 Filters: filters,
91 })
92 if err != nil {
93 errq <- err
94 close(errq)
95 return
96 }
97
98 go func() {
99 defer close(errq)
100
101 for {
102 ev, err := session.Recv()
103 if err != nil {
104 errq <- err
105 return
106 }
107
108 select {
109 case evq <- &events.Envelope{
110 Timestamp: protobuf.FromTimestamp(ev.Timestamp),
111 Namespace: ev.Namespace,
112 Topic: ev.Topic,
113 Event: ev.Event,
114 }:
115 case <-ctx.Done():
116 if cerr := ctx.Err(); cerr != context.Canceled {
117 errq <- cerr
118 }
119 return
120 }
121 }
122 }()
123
124 return ch, errs
125}

Callers

nothing calls this directly

Calls 5

FromTimestampFunction · 0.92
SubscribeMethod · 0.65
RecvMethod · 0.65
DoneMethod · 0.65
ErrMethod · 0.65

Tested by

no test coverage detected