diff --git a/README.md b/README.md index fadeb70..1b9f2ea 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,11 @@ [![Swift Versions](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2FFabrizioBrancati%2FQueuer%2Fbadge%3Ftype%3Dswift-versions)](https://swiftpackageindex.com/FabrizioBrancati/Queuer) [![Swift Platforms](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2FFabrizioBrancati%2FQueuer%2Fbadge%3Ftype%3Dplatforms)](https://swiftpackageindex.com/FabrizioBrancati/Queuer) -## Features - -Queuer is a queue manager, built on top of [OperationQueue](https://developer.apple.com/documentation/foundation/operationqueue) and [Dispatch](https://developer.apple.com/documentation/dispatch) (aka GCD). It allows you to create any asynchronous and synchronous task easily, all managed by a queue, with just a few lines. +Queuer is a queue manager built on top of [OperationQueue](https://developer.apple.com/documentation/foundation/operationqueue) and [Dispatch](https://developer.apple.com/documentation/dispatch) (aka GCD). It allows you to create asynchronous and synchronous tasks easily, all managed by a queue, with just a few lines. -Here is the list of all the features: +## Features -- [x] Works on all Swift compatible platforms (even Linux) +- [x] Works on all Swift compatible platforms (Linux included) - [x] Easy to use - [x] Well documented (100% documented) - [x] Well tested (100% of code coverage) @@ -18,8 +16,8 @@ Here is the list of all the features: - [x] Create a single operation - [x] Create chained operations - [x] Manage a centralized queue -- [x] Create unlimited queue -- [x] Declare how many concurrent operation a queue can handle +- [x] Create unlimited queues +- [x] Declare how many concurrent operations a queue can handle - [x] Create semaphores - [x] Create and handle schedules - [x] Automatically or manually retry an operation @@ -34,7 +32,7 @@ Here is the list of all the features: | 4.1 | 1.3.1...1.3.2 | 8.0+ | 10.10+ | | 9.0+ | 2.0+ | | ✅ | | 4.2 | 2.0.0...2.0.1 | 8.0+ | 10.10+ | | 9.0+ | 3.0+ | | ✅ | | 5.0...5.10 | 2.1.0...2.2.0 | 8.0+ | 10.10+ | | 9.0+ | 3.0+ | | ✅ | -| 5.9...5.10 | 3.0.0 | 12.0+ | 10.13+ | 13.0+ | 12.0+ | 4.0+ | 1.0+ | ✅ | +| 5.9...5.10 | 3.0.0...3.0.1 | 12.0+ | 10.13+ | 13.0+ | 12.0+ | 4.0+ | 1.0+ | ✅ | ## Installing @@ -63,14 +61,14 @@ Add the dependency to any targets you've declared in your manifest: - [Custom Queue](https://github.com/FabrizioBrancati/Queuer#custom-queue) - [Create an Operation Block](https://github.com/FabrizioBrancati/Queuer#create-an-operation-block) - [Chained Operations](https://github.com/FabrizioBrancati/Queuer#chained-operations) -- [Group Oprations](https://github.com/FabrizioBrancati/Queuer#group-operations) +- [Group Operations](https://github.com/FabrizioBrancati/Queuer#group-operations) - [Queue States](https://github.com/FabrizioBrancati/Queuer#queue-states) - [Synchronous Queue](https://github.com/FabrizioBrancati/Queuer#synchronous-queue) -- [Asynchronous Operation](https://github.com/FabrizioBrancati/Queuer#asynchronous-operation) +- [Create a Custom Operation](https://github.com/FabrizioBrancati/Queuer#create-a-custom-operation) - [Automatically Retry an Operation](https://github.com/FabrizioBrancati/Queuer#automatically-retry-an-operation) - [Manually Retry an Operation](https://github.com/FabrizioBrancati/Queuer#manually-retry-an-operation) - [Manually Finish an Operation](https://github.com/FabrizioBrancati/Queuer#manually-finish-an-operation) -- [Async Task in an Operation](https://github.com/FabrizioBrancati/Queuer#async-tasks-in-an-operation) +- [Async Task in an Operation](https://github.com/FabrizioBrancati/Queuer#async-task-in-an-operation) - [Scheduler](https://github.com/FabrizioBrancati/Queuer#scheduler) - [Semaphore](https://github.com/FabrizioBrancati/Queuer#semaphore) @@ -217,23 +215,14 @@ There are a few method to handle the queue states. Setting the `maxConcurrentOperationCount` property of a queue to `1` will make you sure that only one task at a time will be executed. -### Asynchronous Operation +### Create a Custom Operation -`ConcurrentOperation` is a class created to be subclassed. +If you want to create your custom `Operation`, the class `ConcurrentOperation` is a class ready to be subclassed. It allows synchronous and asynchronous tasks, has a pause and resume states, can be easily added to a queue and can be created with a block. You can create your custom `ConcurrentOperation` by subclassing it. -You must override `execute()` function and call the `finish(success:)` function inside it, when the task has finished its job to notify the queue. - -For convenience it has an `init` function with a completion block: - -```swift -let concurrentOperation = ConcurrentOperation { _ in - /// Your task here -} -concurrentOperation.addToQueue(queue) -``` +You must override `execute()` function and call the `finish(success:)` function, when the task has finished its job to notify the queue, regardless if it was successful or not. ### Automatically Retry an Operation