UNPKG

te_nsqjs

Version:
65 lines (54 loc) 1.47 kB
// Generated by CoffeeScript 1.12.3 var FrameBuffer, _; _ = require('underscore'); FrameBuffer = (function() { function FrameBuffer() {} FrameBuffer.prototype.consume = function(raw) { return this.buffer = Buffer.concat(_.compact([this.buffer, raw])); }; FrameBuffer.prototype.nextFrame = function() { var frame, nextOffset; if (!this.buffer) { return; } if (!(this.frameSize(0) && this.frameSize(0) <= this.buffer.length)) { return; } frame = this.pluckFrame(); nextOffset = this.nextOffset(); this.buffer = this.buffer.slice(nextOffset); if (!this.buffer.length) { delete this.buffer; } return frame; }; FrameBuffer.prototype.pluckFrame = function(offset) { var frame, frameId; if (offset == null) { offset = 0; } frame = this.buffer.slice(offset, offset + this.frameSize(offset)); frameId = frame.readInt32BE(4); return [frameId, frame.slice(8)]; }; FrameBuffer.prototype.nextOffset = function(offset) { var size; if (offset == null) { offset = 0; } size = this.frameSize(offset); if (size) { return offset + size; } }; FrameBuffer.prototype.frameSize = function(offset) { if (!(this.buffer && this.buffer.length > 4)) { return; } if (offset + 4 <= this.buffer.length) { return 4 + this.buffer.readInt32BE(offset); } }; return FrameBuffer; })(); module.exports = FrameBuffer;