https://github.com/space-code/typhoon
Typhoon is a service for retry policies
https://github.com/space-code/typhoon
exponential-backoff retry retry-strategies swift
Last synced: 5 months ago
JSON representation
Typhoon is a service for retry policies
- Host: GitHub
- URL: https://github.com/space-code/typhoon
- Owner: space-code
- License: mit
- Created: 2023-11-10T10:54:55.000Z (almost 2 years ago)
- Default Branch: dev
- Last Pushed: 2024-05-11T16:03:04.000Z (over 1 year ago)
- Last Synced: 2024-10-30T04:56:47.582Z (11 months ago)
- Topics: exponential-backoff, retry, retry-strategies, swift
- Language: Swift
- Homepage:
- Size: 322 KB
- Stars: 8
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README

typhoon
## Description
`Typhoon` is a service for retry policies.- [Usage](#usage)
- [Requirements](#requirements)
- [Installation](#installation)
- [Communication](#communication)
- [Contributing](#contributing)
- [Author](#author)
- [License](#license)## Usage
`Typhoon` provides three retry policy strategies:
```swift
/// A retry strategy with a constant number of attempts and fixed duration between retries.
case constant(retry: Int, duration: DispatchTimeInterval)/// A retry strategy with an exponential increase in duration between retries.
case exponential(retry: Int, multiplier: Double = 2.0, duration: DispatchTimeInterval)/// A retry strategy with exponential increase in duration between retries and added jitter.
case exponentialWithJitter(retry: Int, jitterFactor: Double = 0.1, maxInterval: UInt64? = 60, multiplier: Double = 2.0, duration: DispatchTimeInterval)
```Create a `RetryPolicyService` instance and pass a desired strategy like this:
```swift
import Typhoonlet retryPolicyService = RetryPolicyService(strategy: .constant(retry: 10, duration: .seconds(1)))
do {
_ = try await retryPolicyService.retry {
// Some logic here ...
}
} catch {
// Catch an error here ...
}
```## Requirements
- iOS 13.0+ / macOS 10.15+ / tvOS 13.0+ / watchOS 6.0+ / visionOS 1.0+
- Xcode 14.0
- Swift 5.7## Installation
### Swift Package ManagerThe [Swift Package Manager](https://swift.org/package-manager/) is a tool for automating the distribution of Swift code and is integrated into the `swift` compiler. It is in early development, but `typhoon` does support its use on supported platforms.
Once you have your Swift package set up, adding `typhoon` as a dependency is as easy as adding it to the `dependencies` value of your `Package.swift`.
```swift
dependencies: [
.package(url: "https://github.com/space-code/typhoon.git", .upToNextMajor(from: "1.0.0"))
]
```## Communication
- If you **found a bug**, open an issue.
- If you **have a feature request**, open an issue.
- If you **want to contribute**, submit a pull request.## Contributing
Bootstrapping development environment```
make bootstrap
```Please feel free to help out with this project! If you see something that could be made better or want a new feature, open up an issue or send a Pull Request!
## Author
Nikita Vasilev, nv3212@gmail.com## License
typhoon is available under the MIT license. See the LICENSE file for more info.