bahnui/back/node_modules/@derhuerst/round-robin-scheduler/index.js
2024-11-15 23:23:46 +01:00

46 lines
933 B
JavaScript

'use strict'
const RoundRobin = {
init: function (values) {
if (!Array.isArray(values)) throw new Error('values must be an array')
this.values = Array.from(values)
this.length = this.values.length
this.i = 0
},
get: function () {
if (this.i >= this.length) {
this.i = 1
return this.values[0]
}
return this.values[this.i++]
},
has: function (val) {
return this.values.indexOf(val) >= 0
},
findIndex: function (fn) {
return this.values.findIndex(fn)
},
add: function (val) {
this.values.push(val)
return this.length++
},
remove: function (i) {
if (i < 0 || i > this.length) return false
this.values.splice(i, 1)
this.length--
return true
}
}
const createRoundRobinScheduler = (values) => {
const roundRobin = Object.create(RoundRobin)
roundRobin.init(values || [])
return roundRobin
}
createRoundRobinScheduler.RoundRobin = RoundRobin
module.exports = createRoundRobinScheduler