Awesome
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
.
[![compatible with abstract-scheduler](https://unpkg.com/abstract-scheduler@4/badge.svg)](https://github.com/derhuerst/abstract-scheduler)
How to test for abstract-scheduler
compatibility
npm i abstract-scheduler --save-dev
Include 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.