123456789101112131415161718192021222324252627282930313233343536373839 |
- 'use strict'
- const enqueue = require('./enqueue')
- const flush = require('./flush')
- const purge = require('./purge')
- /**
- * Builds a request queue object and returns it.
- *
- * @param {object} [options]
- * @param {integer} [options.size] Maximum size of the request queue. Must be
- * a number greater than `0` if supplied. Default: `Infinity`.
- * @param {integer} [options.timeout] Time in milliseconds a queue has to
- * complete the requests it contains.
- *
- * @returns {object} A queue instance.
- */
- module.exports = function requestQueueFactory (options) {
- const opts = Object.assign({}, options)
- const q = {
- size: (opts.size > 0) ? opts.size : Infinity,
- timeout: (opts.timeout > 0) ? opts.timeout : 0,
- _queue: new Set(),
- _timer: null,
- _frozen: false
- }
- q.enqueue = enqueue.bind(q)
- q.flush = flush.bind(q)
- q.purge = purge.bind(q)
- q.freeze = function freeze () {
- this._frozen = true
- }
- q.thaw = function thaw () {
- this._frozen = false
- }
- return q
- }
|