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'
Send a PR by adding yours!
@derhuerst/round-robin-scheduler
– A round-robin scheduler.
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)
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
.
Create an empty scheduler or provide some initial values.
Add a value to the scheduler. Returns the (0
-based) index of the stored value.
Remove a value by (0
-based) index. Returns true
if the scheduler contained value, false
otherwise.
Checks whether the given value is already in the scheduler. Returns either true
or false
.
Get the next value according to the scheduling algorithm.
abstract-scheduler
is inspired by abstract-chunk-store
, abstract-blob-store
and abstract-point-store
.
If you have a question or need support using abstract-scheduler
, refer to the issues page.