mirror of
https://github.com/tailscale/tailscale.git
synced 2024-11-29 04:55:31 +00:00
syncs: delete Map.Range, update callers to iterators
Updates #11038 Change-Id: I2819fed896cc4035aba5e4e141b52c12637373b1 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
parent
2cadb80fb2
commit
c763b7a7db
@ -253,22 +253,6 @@ func (m *Map[K, V]) Delete(key K) {
|
||||
delete(m.m, key)
|
||||
}
|
||||
|
||||
// Range iterates over the map in an undefined order calling f for each entry.
|
||||
// Iteration stops if f returns false. Map changes are blocked during iteration.
|
||||
// A read lock is held for the entire duration of the iteration.
|
||||
// Use the [WithLock] method instead to mutate the map during iteration.
|
||||
//
|
||||
// Deprecated: Use [All], [Keys], or [Values] instead.
|
||||
func (m *Map[K, V]) Range(f func(key K, value V) bool) {
|
||||
m.mu.RLock()
|
||||
defer m.mu.RUnlock()
|
||||
for k, v := range m.m {
|
||||
if !f(k, v) {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Keys iterates over all keys in the map in an undefined order.
|
||||
// A read lock is held for the entire duration of the iteration.
|
||||
// Use the [WithLock] method instead to mutate the map during iteration.
|
||||
|
@ -160,10 +160,9 @@ func TestMap(t *testing.T) {
|
||||
}
|
||||
got := map[string]int{}
|
||||
want := map[string]int{"one": 1, "two": 2, "three": 3}
|
||||
m.Range(func(k string, v int) bool {
|
||||
for k, v := range m.All() {
|
||||
got[k] = v
|
||||
return true
|
||||
})
|
||||
}
|
||||
if d := cmp.Diff(got, want); d != "" {
|
||||
t.Errorf("Range mismatch (-got +want):\n%s", d)
|
||||
}
|
||||
@ -178,10 +177,9 @@ func TestMap(t *testing.T) {
|
||||
m.Delete("noexist")
|
||||
got = map[string]int{}
|
||||
want = map[string]int{}
|
||||
m.Range(func(k string, v int) bool {
|
||||
for k, v := range m.All() {
|
||||
got[k] = v
|
||||
return true
|
||||
})
|
||||
}
|
||||
if d := cmp.Diff(got, want); d != "" {
|
||||
t.Errorf("Range mismatch (-got +want):\n%s", d)
|
||||
}
|
||||
|
@ -226,7 +226,7 @@ func (m *Manager) IncomingFiles() []ipn.PartialFile {
|
||||
// in JSON to clients. They distinguish between empty and non-nil
|
||||
// to know whether a Notify should be able about files.
|
||||
files := make([]ipn.PartialFile, 0)
|
||||
m.incomingFiles.Range(func(k incomingFileKey, f *incomingFile) bool {
|
||||
for k, f := range m.incomingFiles.All() {
|
||||
f.mu.Lock()
|
||||
defer f.mu.Unlock()
|
||||
files = append(files, ipn.PartialFile{
|
||||
@ -238,8 +238,7 @@ func (m *Manager) IncomingFiles() []ipn.PartialFile {
|
||||
FinalPath: f.finalPath,
|
||||
Done: f.done,
|
||||
})
|
||||
return true
|
||||
})
|
||||
}
|
||||
return files
|
||||
}
|
||||
|
||||
|
@ -974,13 +974,12 @@ func (n *network) writeEth(res []byte) bool {
|
||||
|
||||
if dstMAC.IsBroadcast() || (n.v6 && etherType == layers.EthernetTypeIPv6 && dstMAC == macAllNodes) {
|
||||
num := 0
|
||||
n.writers.Range(func(mac MAC, nw networkWriter) bool {
|
||||
for mac, nw := range n.writers.All() {
|
||||
if mac != srcMAC {
|
||||
num++
|
||||
nw.write(res)
|
||||
}
|
||||
return true
|
||||
})
|
||||
}
|
||||
return num > 0
|
||||
}
|
||||
if srcMAC == dstMAC {
|
||||
|
@ -414,15 +414,14 @@ func init() {
|
||||
// endpoint, and name collisions will result in Prometheus scraping errors.
|
||||
clientmetric.NewCounterFunc("netstack_tcp_forward_dropped_attempts", func() int64 {
|
||||
var total uint64
|
||||
stacksForMetrics.Range(func(ns *Impl, _ struct{}) bool {
|
||||
for ns := range stacksForMetrics.Keys() {
|
||||
delta := ns.ipstack.Stats().TCP.ForwardMaxInFlightDrop.Value()
|
||||
if total+delta > math.MaxInt64 {
|
||||
total = math.MaxInt64
|
||||
return false
|
||||
break
|
||||
}
|
||||
total += delta
|
||||
return true
|
||||
})
|
||||
}
|
||||
return int64(total)
|
||||
})
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user