Record Class HttpRateLimitConfig

java.lang.Object
java.lang.Record
app.ductape.sdk.http.HttpRateLimitConfig

public record HttpRateLimitConfig(long capacity, long refillTokens, Duration refillPeriod) extends Record
Per-host outbound HTTP rate limit. Sprint 8 production hardening.

Wraps a token bucket: capacity tokens, refilling refillTokens every refillPeriod. Use unbounded() to disable rate limiting and perSecond(long) for the common steady-state case.

Defaults to 200 requests/sec per host with a burst capacity of 200 — high enough for normal SDK traffic, low enough to detect runaway loops.

  • Constructor Details

    • HttpRateLimitConfig

      public HttpRateLimitConfig(long capacity, long refillTokens, Duration refillPeriod)
      Creates an instance of a HttpRateLimitConfig record class.
      Parameters:
      capacity - the value for the capacity record component
      refillTokens - the value for the refillTokens record component
      refillPeriod - the value for the refillPeriod record component
  • Method Details

    • unbounded

      public static HttpRateLimitConfig unbounded()
    • perSecond

      public static HttpRateLimitConfig perSecond(long requestsPerSecond)
    • defaults

      public static HttpRateLimitConfig defaults()
    • isUnbounded

      public boolean isUnbounded()
      Indicates whether the configuration is effectively unlimited (used to skip bucket lookups).
    • toString

      public final String toString()
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      Specified by:
      toString in class Record
      Returns:
      a string representation of this object
    • hashCode

      public final int hashCode()
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      Specified by:
      hashCode in class Record
      Returns:
      a hash code value for this object
    • equals

      public final boolean equals(Object o)
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. Reference components are compared with Objects::equals(Object,Object); primitive components are compared with '=='.
      Specified by:
      equals in class Record
      Parameters:
      o - the object with which to compare
      Returns:
      true if this object is the same as the o argument; false otherwise.
    • capacity

      public long capacity()
      Returns the value of the capacity record component.
      Returns:
      the value of the capacity record component
    • refillTokens

      public long refillTokens()
      Returns the value of the refillTokens record component.
      Returns:
      the value of the refillTokens record component
    • refillPeriod

      public Duration refillPeriod()
      Returns the value of the refillPeriod record component.
      Returns:
      the value of the refillPeriod record component