UNPKG

@devicefarmer/adbkit-monkey

Version:

A Node.js interface to the Android monkey tool.

67 lines (55 loc) 1.98 kB
(function() { var EventEmitter, Parser, Reply, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; EventEmitter = require('events').EventEmitter; Reply = require('./reply'); Parser = (function(_super) { __extends(Parser, _super); function Parser(options) { this.column = 0; this.buffer = new Buffer(''); } Parser.prototype.parse = function(chunk) { this.buffer = Buffer.concat([this.buffer, chunk]); while (this.column < this.buffer.length) { if (this.buffer[this.column] === 0x0a) { this._parseLine(this.buffer.slice(0, this.column)); this.buffer = this.buffer.slice(this.column + 1); this.column = 0; } this.column += 1; } if (this.buffer.length) { this.emit('wait'); } else { this.emit('drain'); } }; Parser.prototype._parseLine = function(line) { switch (line[0]) { case 0x4f: if (line.length === 2) { this.emit('reply', new Reply(Reply.OK, null)); } else { this.emit('reply', new Reply(Reply.OK, line.toString('ascii', 3))); } break; case 0x45: if (line.length === 5) { this.emit('reply', new Reply(Reply.ERROR, null)); } else { this.emit('reply', new Reply(Reply.ERROR, line.toString('ascii', 6))); } break; default: this._complain(line); } }; Parser.prototype._complain = function(line) { this.emit('error', new SyntaxError("Unparseable line '" + line + "'")); }; return Parser; })(EventEmitter); module.exports = Parser; }).call(this);