abstract-scheduler v4.0.0
abstract-scheduler
An interface and test suite to implement various scheduling algorithms. The goal is to define a simple and flexible standard for libraries that implement scheduling algorithms, so that you can replace them easily.
const createScheduler = require('any-abstract-scheduler-compatible')
const servers = createScheduler(['1.example.com', '2.example.com'])
servers.get() // '1.example.com'
servers.get() // '2.example.com'
servers.get() // '1.example.com'abstract-scheduler-compatible modules
Send a PR by adding yours!
@derhuerst/round-robin-scheduler– A round-robin scheduler.
Badge
Include this badge if you make a library compatible with abstract-scheduler.
[](https://github.com/derhuerst/abstract-scheduler)How to test for abstract-scheduler compatibility
npm i abstract-scheduler --save-devInclude this in your test file:
const runAbstractSchedulerTests = require('abstract-scheduler')
const createMyScheduler = require('.')
runAbstractSchedulerTests(createMyScheduler)tape will be used to test, writing TAP to stdout.
The abstract-scheduler API
createScheduler(values = [])
Create an empty scheduler or provide some initial values.
scheduler.add(value)
Add a value to the scheduler. Returns the (0-based) index of the stored value.
scheduler.remove(i)
Remove a value by (0-based) index. Returns true if the scheduler contained value, false otherwise.
scheduler.has(value)
Checks whether the given value is already in the scheduler. Returns either true or false.
scheduler.get()
Get the next value according to the scheduling algorithm.
Related
abstract-scheduler is inspired by abstract-chunk-store, abstract-blob-store and abstract-point-store.
Contributing
If you have a question or need support using abstract-scheduler, refer to the issues page.