UNPKG

@arpinum/backend

Version:

Base modules for backend applications

41 lines (32 loc) 765 B
'use strict'; let _ = require('lodash'); let Queue = require('./Queue'); class QueueManager { constructor() { this._queues = new Map(); } queue(id, options) { if (this._seemsBlank(id)) { throw new Error('Queue id cannot be blank'); } if (!this._queues.has(id)) { this._createQueue(id, options); } return this._queues.get(id); } _createQueue(id, options) { let queueOptions = _.assign({ onEmpty: () => { this._queueEmpty(id); } }, options); this._queues.set(id, new Queue(queueOptions)); } _queueEmpty(id) { this._queues.delete(id); } _seemsBlank(id) { return id === '' || id === null || id === undefined || _.isEqual(id, {}); } } module.exports = QueueManager;