'use strict'; var Transform = require('stream').Transform; var streamParser = require('stream-parser'); var inherits = require('util').inherits; function ParserStream() { Transform.call(this, { readableObjectMode: true }); } inherits(ParserStream, Transform); streamParser(ParserStream.prototype); exports.ParserStream = ParserStream; exports.sliceEq = function (src, start, dest) { for (var i = start, j = 0; j < dest.length;) { if (src[i++] !== dest[j++]) return false; } return true; }; exports.str2arr = function (str, format) { var arr = [], i = 0; if (format && format === 'hex') { while (i < str.length) { arr.push(parseInt(str.slice(i, i + 2), 16)); i += 2; } } else { for (; i < str.length; i++) { /* eslint-disable no-bitwise */ arr.push(str.charCodeAt(i) & 0xFF); } } return arr; }; exports.readUInt16LE = function (data, offset) { return data[offset] | (data[offset + 1] << 8); }; exports.readUInt16BE = function (data, offset) { return data[offset + 1] | (data[offset] << 8); }; exports.readUInt32LE = function (data, offset) { return data[offset] | (data[offset + 1] << 8) | (data[offset + 2] << 16) | (data[offset + 3] * 0x1000000); }; exports.readUInt32BE = function (data, offset) { return data[offset + 3] | (data[offset + 2] << 8) | (data[offset + 1] << 16) | (data[offset] * 0x1000000); }; function ProbeError(message, code, statusCode) { Error.call(this); Error.captureStackTrace(this, this.constructor); this.name = this.constructor.name; this.message = message; if (code) this.code = code; if (statusCode) this.statusCode = statusCode; } // Inherit from Error require('inherits')(ProbeError, Error); exports.ProbeError = ProbeError;