fifo-queue
v0.0.3
Published
Asynchronous fifo queuing task manager
Downloads
4
Readme
fifo-queue is an fifo queueing tasks managaer.
Installation
npm install fifo-queue
Basic usage
'use strict';
var fifoqueue = require('../fifo-queue'),
results = [];
fifoqueue.settings('concurency', 1)
.register(
'echo-task',
'echo message',
{message: 'string'})
.queue('echo-task', {
options: {message: 'first task'},
onStart: function() {
console.log('first task started');
},
onEnd: function(err, res) {
results.push(res.toString());
}
})
.queue('echo-task', {
options: {message: 'second task'},
onEnd: function(err, res) {
results.push(res.toString());
}
})
.queue('echo-task', {
options: {message: 'third task'},
onEnd: function(err, res) {
results.push(res.toString());
console.log(results);
fifoqueue.stop();
}
})
.start();
>>> [ 'first task\r\n', 'second task\r\n', 'third task\r\n' ]
Settings
concurency
Define how many processes can be executed together.
Infinity by default. It can be set to any strictly positive number.
interval
Define time (ms) between two refresh of the pending queue.
hisotry
Define number of runned task keeped in memory, default to 0.
API
settings
fifoqueue.settings('interval', 20);
fifoqueue.settings('interval');
>>> 20
fifoqueue.settings({
'interval': 20,
'concurency': 2,
'history': 10
});
fifoqueue.settings();
>>> {
>>> 'interval': 20,
>>> 'concurency': 2,
>>> 'history': 10
>>> }
Register task
if (!fifoqueue.taskExists('coucou')) {
fifoqueue.register(
'coucou',
'echo coucou'
);
}
Queue tasks (and start execution)
fifoqueue.queue('coucou');
fifoqueue.queue('coucou', {
onStart: function() {
console.log('start : coucou');
},
onEnd: function() {
console.log('end : coucou');
}
});
fifoqueue.start();
Access queues
fifoqueue.queue('coucou');
fifoqueue.queue('coucou');
fifoqueue.queue('coucou');
fifoqueue.pending.length;
>>> 3
fifoqueue.running.length;
>>> 0
fifoqueue.history.length;
>>> 2
Contribution
Please feel free to contribute by forking this repo. Just be sure to add relevant unit tests and pass them all before submitting any code.
To setup the project, just install npm dependencies with npm install
and run
tests with npm test
.
License
MIT