in pkg/containerd/store.go [128:163]
func (c *store) Subscribe(ctx context.Context) (<-chan Reference, <-chan error) {
refChan := make(chan Reference)
errChan := make(chan error)
eventsChan, eventsErrChan := c.client.EventService().Subscribe(ctx, c.eventFilter)
go func() {
for event := range eventsChan {
name, err := getEventImageName(event.Event)
if err != nil {
errChan <- err
continue
}
image, err := c.client.GetImage(ctx, name)
if err != nil {
errChan <- err
continue
}
ref, err := ParseReference(image.Name(), image.Target().Digest)
if err != nil {
errChan <- err
} else {
refChan <- ref
}
}
}()
go func() {
for err := range eventsErrChan {
errChan <- err
}
}()
return refChan, errChan
}