KeyOf exposes f's keyFunc, but also detects the key of a Deltas object or DeletedFinalStateUnknown objects.
(obj interface{})
| 148 | // KeyOf exposes f's keyFunc, but also detects the key of a Deltas object or |
| 149 | // DeletedFinalStateUnknown objects. |
| 150 | func (f *DeltaFIFO) KeyOf(obj interface{}) (string, error) { |
| 151 | if d, ok := obj.(Deltas); ok { |
| 152 | if len(d) == 0 { |
| 153 | return "", KeyError{obj, ErrZeroLengthDeltasObject} |
| 154 | } |
| 155 | obj = d.Newest().Object |
| 156 | } |
| 157 | if d, ok := obj.(DeletedFinalStateUnknown); ok { |
| 158 | return d.Key, nil |
| 159 | } |
| 160 | return f.keyFunc(obj) |
| 161 | } |
| 162 | |
| 163 | // Return true if an Add/Update/Delete/AddIfNotPresent are called first, |
| 164 | // or an Update called first but the first batch of items inserted by Replace() has been popped |