func()

in internal/telemetry/telemetry.go [65:88]


func (h *HoverTelemetryRateLimiter) Allow(name string, properties map[string]interface{}) bool {
	if name != "textDocument/hover" {
		return true
	}
	// always allow the resource-definition hover
	if properties != nil && properties["kind"] != nil {
		if kind, ok := properties["kind"].(string); ok && kind == "resource-definition" {
			return true
		}
	}

	timeStampNow := time.Now().Unix()
	if h.lastSentTimeStamp == 0 {
		h.lastSentTimeStamp = timeStampNow
		return true
	}

	// minimum interval between two hover telemetry events is 1 hour
	if timeStampNow-h.lastSentTimeStamp < 3600 {
		return false
	}
	h.lastSentTimeStamp = timeStampNow
	return true
}