simple_exponential_backoff 0.1.0+2 
simple_exponential_backoff: ^0.1.0+2 copied to clipboard
A package that provides an exponential backoff algorithm.
Simple Exponential Backoff #
A Dart implementation of Google's Exponential Backoff algorithm, designed to efficiently handle retries in case of failures.
Features #
- Easy Integration: Seamlessly integrate Exponential Backoff into your Dart projects.
 - Customizable: Fine-tune parameters such as initial delay, maximum retries, and multiplier.
 - Robust Retry Strategy: Implement a reliable retry mechanism for your applications.
 
Getting started #
To get started with the Exponential Backoff Dart package, make sure you have Dart installed. You can find more information on Dart installation here.
Usage #
Add the following dependency to your pubspec.yaml file:
dependencies:
  simple_exponential_backoff: ^0.1.0
Then, run:
dart pub get
Now, you can import the package in your Dart code:
import 'package:simple_exponential_backoff/simple_exponential_backoff.dart';
void main() async {
  final exponentialBackOff = ExponentialBackoff();
  /// The result will be of type [Either<Exception, Response>]
  final result = await exponentialBackOff.start<Response>(
    // Make a request
        () {
      return get(Uri.parse('https://www.gnu.org/'))
          .timeout(Duration(seconds: 10));
    },
    // Retry on SocketException or TimeoutException and other then that the process
    // will stop and return with the error
    retryIf: (e) => e is SocketException || e is TimeoutException,
  );
  /// You can handle the result in two ways
  /// * By checking if the result `isLeft` or `isRight`. and get the value accordingly.
  /// * Using the fold function `result.fold((error){},(data){})`. will call the
  ///   first(Left) function if the result is error otherwise will call second
  ///   function(Right) if the result is data.
  ///
  /// The error will always be in Left and the data will always be in Right
  // using if check
  if (result.isLeft()) {
    //Left(Exception): handle the error
    final error = result.getLeftValue();
    print(error);
  } else {
    //Right(Response): handle the result
    final response = result.getRightValue();
    print(response.body);
  }
  // using fold:
  result.fold(
        (error) {
      //Left(Exception): handle the error
      print(error);
    },
        (response) {
      //Right(Response): handle the result
      print(response.body);
    },
  );
}
For more detailed examples, check the /example folder in the repository.
Additional information #
For more information about the Exponential Backoff Dart package, check out the official documentation.
How to Contribute #
We welcome contributions! If you want to contribute to the development of this package, please check the contribution guidelines.
Issues #
If you encounter any issues or have suggestions, please feel free to file an issue. We appreciate your feedback and will respond promptly.
License #
This package is licensed under the MIT License. See the LICENSE file for details.