// NewCache returns a new Cache with the specified endpointsPerSlice. func NewCache(endpointsPerSlice int32) *Cache { … } type Cache … const trafficDistributionImplementationSpecific … type ServicePortCache … type EfficiencyInfo … // NewServicePortCache initializes and returns a new ServicePortCache. func NewServicePortCache() *ServicePortCache { … } // Set updates the ServicePortCache to contain the provided EfficiencyInfo // for the provided PortMapKey. func (spc *ServicePortCache) Set(pmKey endpointsliceutil.PortMapKey, eInfo EfficiencyInfo) { … } // totals returns the total number of endpoints and slices represented by a // ServicePortCache. func (spc *ServicePortCache) totals(maxEndpointsPerSlice int) (int, int, int) { … } // UpdateServicePortCache updates a ServicePortCache in the global cache for a // given Service and updates the corresponding metrics. // Parameters: // * serviceNN refers to a NamespacedName representing the Service. // * spCache refers to a ServicePortCache for the specified Service. func (c *Cache) UpdateServicePortCache(serviceNN types.NamespacedName, spCache *ServicePortCache) { … } func (c *Cache) UpdateTrafficDistributionForService(serviceNN types.NamespacedName, trafficDistributionPtr *string) { … } // DeleteService removes references of a Service from the global cache and // updates the corresponding metrics. func (c *Cache) DeleteService(serviceNN types.NamespacedName) { … } // updateMetrics updates metrics with the values from this Cache. // Must be called holding lock. func (c *Cache) updateMetrics() { … } // numDesiredSlices calculates the number of EndpointSlices that would exist // with ideal endpoint distribution. func numDesiredSlices(numEndpoints, maxEndpointsPerSlice int) int { … }