// Generated by CoffeeScript 1.8.0 var MessageQueue, utils, _; _ = require('underscore'); utils = require('./utils'); module.exports = utils.registerClass(MessageQueue = (function() { function MessageQueue() { this.messages = []; this.closed = false; this.callback = null; this.timer = null; _.bindAll(this, '_timerExpired', '_updated'); } MessageQueue.prototype.shutdown = function() { if (this.closed) { return; } this.closed = true; if (this.timer) { clearTimeout(this.timer); } if (this.callback) { this.callback.call(null, this.messages); } this.callback = null; this.messages = null; return this.timer = null; }; MessageQueue.prototype.push = function(message) { if (this.closed) { return; } this.messages.push(message); return process.nextTick(this._updated); }; MessageQueue.prototype.pullAll = function(timeout, callback) { if (this.closed) { return callback.call(null, null); } if (this.callback) { return callback.call(null, []); } if (this.messages.length) { callback.call(null, this.messages); this.messages = []; return; } this.callback = callback; return this.timer = setTimeout(this._timerExpired, timeout); }; MessageQueue.prototype._timerExpired = function() { return this._updated(); }; MessageQueue.prototype._updated = function() { var callback, messages; if (this.closed) { return; } if (!this.callback) { return; } callback = this.callback; messages = this.messages; if (this.timer) { clearTimeout(this.timer); } this.callback = null; this.messages = []; this.timer = null; return callback.call(null, messages); }; return MessageQueue; })());