var supportedEndpointSliceAddressTypes … type EndpointsChangeTracker … type makeEndpointFunc … type processEndpointsMapChangeFunc … // NewEndpointsChangeTracker initializes an EndpointsChangeTracker func NewEndpointsChangeTracker(hostname string, makeEndpointInfo makeEndpointFunc, ipFamily v1.IPFamily, recorder events.EventRecorder, processEndpointsMapChange processEndpointsMapChangeFunc) *EndpointsChangeTracker { … } // EndpointSliceUpdate updates the EndpointsChangeTracker by adding/updating or removing // endpointSlice (depending on removeSlice). It returns true if this update contained a // change that needs to be synced; note that this is different from the return value of // ServiceChangeTracker.Update(). func (ect *EndpointsChangeTracker) EndpointSliceUpdate(endpointSlice *discovery.EndpointSlice, removeSlice bool) bool { … } // checkoutChanges returns a map of pending endpointsChanges and marks them as // applied. func (ect *EndpointsChangeTracker) checkoutChanges() map[types.NamespacedName]*endpointsChange { … } // checkoutTriggerTimes applies the locally cached trigger times to a map of // trigger times that have been passed in and empties the local cache. func (ect *EndpointsChangeTracker) checkoutTriggerTimes(lastChangeTriggerTimes *map[types.NamespacedName][]time.Time) { … } // getLastChangeTriggerTime returns the time.Time value of the // EndpointsLastChangeTriggerTime annotation stored in the given endpoints // object or the "zero" time if the annotation wasn't set or was set // incorrectly. func getLastChangeTriggerTime(annotations map[string]string) time.Time { … } type endpointsChange … type UpdateEndpointsMapResult … type EndpointsMap … // Update updates em based on the changes in ect, returns information about the diff since // the last Update, triggers processEndpointsMapChange on every change, and clears the // changes map. func (em EndpointsMap) Update(ect *EndpointsChangeTracker) UpdateEndpointsMapResult { … } // Merge ensures that the current EndpointsMap contains all <service, endpoints> pairs from the EndpointsMap passed in. func (em EndpointsMap) merge(other EndpointsMap) { … } // Unmerge removes the <service, endpoints> pairs from the current EndpointsMap which are contained in the EndpointsMap passed in. func (em EndpointsMap) unmerge(other EndpointsMap) { … } // getLocalEndpointIPs returns endpoints IPs if given endpoint is local - local means the endpoint is running in same host as kube-proxy. func (em EndpointsMap) getLocalReadyEndpointIPs() map[types.NamespacedName]sets.Set[string] { … } // LocalReadyEndpoints returns a map of Service names to the number of local ready // endpoints for that service. func (em EndpointsMap) LocalReadyEndpoints() map[types.NamespacedName]int { … }