Class ExponentialBackoffStrategy

java.lang.Object
com.ultikits.ultitools.websocket.ExponentialBackoffStrategy
All Implemented Interfaces:
ReconnectStrategy

public class ExponentialBackoffStrategy extends Object implements ReconnectStrategy
Exponential backoff reconnection strategy. Delays increase exponentially: 5s, 10s, 20s, 40s... up to max 5 minutes.
Since:
6.2.0
Version:
1.0.0
Author:
wisdomme
  • Field Details

    • DEFAULT_INITIAL_DELAY

      public static final long DEFAULT_INITIAL_DELAY
      Initial delay in milliseconds (5 seconds).
      See Also:
    • DEFAULT_MAX_DELAY

      public static final long DEFAULT_MAX_DELAY
      Maximum delay in milliseconds (5 minutes).
      See Also:
    • DEFAULT_MULTIPLIER

      public static final double DEFAULT_MULTIPLIER
      Default multiplier for exponential growth.
      See Also:
    • DEFAULT_MAX_ATTEMPTS

      public static final int DEFAULT_MAX_ATTEMPTS
      Default maximum number of attempts (0 = unlimited).
      See Also:
    • initialDelay

      private final long initialDelay
    • maxDelay

      private final long maxDelay
    • multiplier

      private final double multiplier
    • maxAttempts

      private final int maxAttempts
    • attemptCount

      private int attemptCount
  • Constructor Details

    • ExponentialBackoffStrategy

      public ExponentialBackoffStrategy()
      Creates a strategy with default settings.
    • ExponentialBackoffStrategy

      public ExponentialBackoffStrategy(long initialDelay, long maxDelay, double multiplier, int maxAttempts)
      Creates a strategy with custom settings.
      Parameters:
      initialDelay - initial delay in milliseconds
      maxDelay - maximum delay in milliseconds
      multiplier - multiplier for exponential growth
      maxAttempts - maximum attempts (0 for unlimited)
  • Method Details

    • getNextDelay

      public long getNextDelay()
      Description copied from interface: ReconnectStrategy
      Gets the delay in milliseconds before the next reconnection attempt.
      Specified by:
      getNextDelay in interface ReconnectStrategy
      Returns:
      the delay in milliseconds
    • reset

      public void reset()
      Description copied from interface: ReconnectStrategy
      Resets the strategy state (called on successful connection).
      Specified by:
      reset in interface ReconnectStrategy
    • getAttemptCount

      public int getAttemptCount()
      Description copied from interface: ReconnectStrategy
      Gets the current attempt count.
      Specified by:
      getAttemptCount in interface ReconnectStrategy
      Returns:
      the number of attempts made
    • shouldContinue

      public boolean shouldContinue()
      Description copied from interface: ReconnectStrategy
      Checks if reconnection should continue.
      Specified by:
      shouldContinue in interface ReconnectStrategy
      Returns:
      true if more reconnection attempts should be made
    • unlimited

      public static ExponentialBackoffStrategy unlimited()
      Creates a strategy that tries forever with default backoff.
      Returns:
      an unlimited retry strategy
    • withMaxAttempts

      public static ExponentialBackoffStrategy withMaxAttempts(int maxAttempts)
      Creates a strategy with limited attempts.
      Parameters:
      maxAttempts - the maximum number of attempts
      Returns:
      a limited retry strategy
    • builder

      public static ExponentialBackoffStrategy.Builder builder()
      Creates a builder for custom configuration.
      Returns:
      a new builder