1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- var debug = require('debug')('axon:queue');
- module.exports = function(options){
- options = options || {};
- return function(sock){
-
- sock.queue = [];
-
- sock.on('connect', function(){
- var prev = sock.queue;
- var len = prev.length;
- sock.queue = [];
- debug('flush %d messages', len);
- for (var i = 0; i < len; ++i) {
- this.send.apply(this, prev[i]);
- }
- sock.emit('flush', prev);
- });
-
- sock.enqueue = function(msg){
- var hwm = sock.settings.hwm;
- if (sock.queue.length >= hwm) return drop(msg);
- sock.queue.push(msg);
- };
-
- function drop(msg) {
- debug('drop');
- sock.emit('drop', msg);
- }
- };
- };
|