NewAssumeCache creates an assume cache for general objects.
(logger klog.Logger, informer Informer, description, indexName string, indexFunc cache.IndexFunc)
| 195 | |
| 196 | // NewAssumeCache creates an assume cache for general objects. |
| 197 | func NewAssumeCache(logger klog.Logger, informer Informer, description, indexName string, indexFunc cache.IndexFunc) *AssumeCache { |
| 198 | c := &AssumeCache{ |
| 199 | logger: logger, |
| 200 | description: description, |
| 201 | indexFunc: indexFunc, |
| 202 | indexName: indexName, |
| 203 | eventQueue: *buffer.NewRing[func()](buffer.RingOptions{InitialSize: 0, NormalSize: 4}), |
| 204 | } |
| 205 | c.cond = sync.NewCond(&c.rwMutex) |
| 206 | indexers := cache.Indexers{} |
| 207 | if indexName != "" && indexFunc != nil { |
| 208 | indexers[indexName] = c.objInfoIndexFunc |
| 209 | } |
| 210 | c.store = cache.NewIndexer(objInfoKeyFunc, indexers) |
| 211 | |
| 212 | // Unit tests don't use informers |
| 213 | if informer != nil { |
| 214 | // Cannot fail in practice?! No-one bothers checking the error. |
| 215 | c.handlerRegistration, _ = informer.AddEventHandler( |
| 216 | cache.ResourceEventHandlerFuncs{ |
| 217 | AddFunc: c.add, |
| 218 | UpdateFunc: c.update, |
| 219 | DeleteFunc: c.delete, |
| 220 | }, |
| 221 | ) |
| 222 | } |
| 223 | return c |
| 224 | } |
| 225 | |
| 226 | func (c *AssumeCache) add(obj interface{}) { |
| 227 | if obj == nil { |
searching dependent graphs…