Class BackpressureHelper


  • public final class BackpressureHelper
    extends Object
    Utility class to help with backpressure-related operations such as request aggregation.
    • Method Detail

      • addCap

        public static long addCap​(long a,
                                  long b)
        Adds two long values and caps the sum at Long.MAX_VALUE.
        Parameters:
        a - the first value
        b - the second value
        Returns:
        the sum capped at Long.MAX_VALUE
      • add

        public static long add​(@NonNull
                               @NonNull AtomicLong requested,
                               long n)
        Atomically adds the positive value n to the requested value in the AtomicLong and caps the result at Long.MAX_VALUE and returns the previous value.
        Parameters:
        requested - the AtomicLong holding the current requested value
        n - the value to add, must be positive (not verified)
        Returns:
        the original value before the add
      • produced

        public static long produced​(@NonNull
                                    @NonNull AtomicLong requested,
                                    long n)
        Atomically subtract the given number (positive, not validated) from the target field unless it contains Long.MAX_VALUE.
        Parameters:
        requested - the target field holding the current requested amount
        n - the produced element count, positive (not validated)
        Returns:
        the new amount