// kvsToEvents gets all events for the watchers from all key-value pairs func kvsToEvents(wg *watcherGroup, revs, vals [][]byte) (evs []storagepb.Event) { for i, v := range vals { var kv storagepb.KeyValue if err := kv.Unmarshal(v); err != nil { log.Panicf("storage: cannot unmarshal event: %v", err) } if !wg.contains(string(kv.Key)) { continue } ty := storagepb.PUT if isTombstone(revs[i]) { ty = storagepb.DELETE // patch in mod revision so watchers won't skip kv.ModRevision = bytesToRev(revs[i]).main } evs = append(evs, storagepb.Event{Kv: &kv, Type: ty}) } return evs }
// kvsToEvents gets all events for the watchers from all key-value pairs func kvsToEvents(revs, vals [][]byte, wsk watcherSetByKey, pfxs map[string]struct{}) (evs []storagepb.Event) { for i, v := range vals { var kv storagepb.KeyValue if err := kv.Unmarshal(v); err != nil { log.Panicf("storage: cannot unmarshal event: %v", err) } k := string(kv.Key) if _, ok := wsk.getSetByKey(k); !ok && !matchPrefix(k, pfxs) { continue } ty := storagepb.PUT if isTombstone(revs[i]) { ty = storagepb.DELETE // patch in mod revision so watchers won't skip kv.ModRevision = bytesToRev(revs[i]).main } evs = append(evs, storagepb.Event{Kv: &kv, Type: ty}) } return evs }