package infra // RateLimiterNew crea un RateLimiter token-bucket vacio con la tasa y rafaga indicadas. // rate son los tokens recargados por segundo (sostenido). // burst es la capacidad maxima del bucket (rafaga puntual). // Si rate o burst son <= 0 se usa 1 como minimo seguro. func RateLimiterNew(rate float64, burst int) *RateLimiter { if rate <= 0 { rate = 1 } if burst <= 0 { burst = 1 } return &RateLimiter{ rate: rate, burst: burst, clients: make(map[string]*rateLimiterClient), } }