0.0.3 • Published 9 years ago

fifo-queue v0.0.3

Weekly downloads
4
License
MIT
Repository
github
Last release
9 years ago

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

0.0.3

9 years ago

0.0.2

9 years ago

0.0.1

9 years ago