From 898cf068985f04db51093d04cdd9fbb215f376c7 Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Thu, 17 Apr 2025 10:47:54 -0700 Subject: [PATCH] ipn/ipnlocal: remove another copy of slicesx.MapValues We added this helper in 1e2e319e7d26. Remove this copy. Updates #cleanup Change-Id: I5b0681acc23692beed35951c9902ac9ceca0a8b9 Signed-off-by: Brad Fitzpatrick --- ipn/ipnlocal/extension_host.go | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/ipn/ipnlocal/extension_host.go b/ipn/ipnlocal/extension_host.go index 79f741e55..aa56ad8ef 100644 --- a/ipn/ipnlocal/extension_host.go +++ b/ipn/ipnlocal/extension_host.go @@ -25,6 +25,7 @@ import ( "tailscale.com/types/logger" "tailscale.com/util/execqueue" "tailscale.com/util/set" + "tailscale.com/util/slicesx" "tailscale.com/util/testenv" ) @@ -378,7 +379,7 @@ func (h *ExtensionHost) NotifyProfileChange(profile ipn.LoginProfileView, prefs h.currentPrefs = prefs h.currentProfile = profile // Get the callbacks to be invoked. - cbs := collectValues(h.profileStateChangeCbs) + cbs := slicesx.MapValues(h.profileStateChangeCbs) h.mu.Unlock() for _, cb := range cbs { cb(profile, prefs, sameNode) @@ -402,7 +403,7 @@ func (h *ExtensionHost) NotifyProfilePrefsChanged(profile ipn.LoginProfileView, h.currentPrefs = newPrefs h.currentProfile = profile // Get the callbacks to be invoked. - stateCbs := collectValues(h.profileStateChangeCbs) + stateCbs := slicesx.MapValues(h.profileStateChangeCbs) h.mu.Unlock() for _, cb := range stateCbs { cb(profile, newPrefs, true) @@ -443,7 +444,7 @@ func (h *ExtensionHost) DetermineBackgroundProfile(profiles ipnext.ProfileStore) // Attempt to resolve the background profile using the registered // background profile resolvers (e.g., [ipn/desktop.desktopSessionsExt] on Windows). h.mu.Lock() - resolvers := collectValues(h.backgroundProfileResolvers) + resolvers := slicesx.MapValues(h.backgroundProfileResolvers) h.mu.Unlock() for _, resolver := range resolvers { if profile := resolver(profiles); profile.Valid() { @@ -481,7 +482,7 @@ func (h *ExtensionHost) NotifyNewControlClient(cc controlclient.Client, profile return nil } h.mu.Lock() - cbs := collectValues(h.newControlClientCbs) + cbs := slicesx.MapValues(h.newControlClientCbs) h.mu.Unlock() if len(cbs) > 0 { ccShutdownCbs = make([]func(), 0, len(cbs)) @@ -527,7 +528,7 @@ func (h *ExtensionHost) AuditLogger() ipnauth.AuditLogFunc { } h.mu.Lock() - providers := collectValues(h.auditLoggers) + providers := slicesx.MapValues(h.auditLoggers) h.mu.Unlock() var loggers []ipnauth.AuditLogFunc @@ -642,17 +643,3 @@ type execQueue interface { Shutdown() Wait(context.Context) error } - -// collectValues is like [slices.Collect] of [maps.Values], -// but pre-allocates the slice to avoid reallocations. -// It returns nil if the map is empty. -func collectValues[K comparable, V any](m map[K]V) []V { - if len(m) == 0 { - return nil - } - s := make([]V, 0, len(m)) - for _, v := range m { - s = append(s, v) - } - return s -}