UNPKG

@devicefarmer/adbkit-monkey

Version:

A Node.js interface to the Android monkey tool.

99 lines (80 loc) 2.74 kB
(function() { var Api, Client, Command, Multi, Parser, Queue, 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; }; Api = require('./api'); Command = require('./command'); Reply = require('./reply'); Queue = require('./queue'); Multi = require('./multi'); Parser = require('./parser'); Client = (function(_super) { __extends(Client, _super); function Client() { this.commandQueue = new Queue; this.parser = new Parser; this.stream = null; } Client.prototype._hook = function() { var _this = this; this.stream.on('data', function(data) { return _this.parser.parse(data); }); this.stream.on('error', function(err) { return _this.emit('error', err); }); this.stream.on('end', function() { return _this.emit('end'); }); this.stream.on('finish', function() { return _this.emit('finish'); }); this.parser.on('reply', function(reply) { return _this._consume(reply); }); this.parser.on('error', function(err) { return _this.emit('error', err); }); }; Client.prototype._consume = function(reply) { var command; if (command = this.commandQueue.dequeue()) { if (reply.isError()) { command.callback(reply.toError(), null, command.command); } else { command.callback(null, reply.value, command.command); } } else { throw new Error("Command queue depleted, but replies still coming in"); } }; Client.prototype.connect = function(stream) { this.stream = stream; this._hook(); return this; }; Client.prototype.end = function() { this.stream.end(); return this; }; Client.prototype.send = function(commands, callback) { var command, _i, _len; if (Array.isArray(commands)) { for (_i = 0, _len = commands.length; _i < _len; _i++) { command = commands[_i]; this.commandQueue.enqueue(new Command(command, callback)); } this.stream.write("" + (commands.join('\n')) + "\n"); } else { this.commandQueue.enqueue(new Command(commands, callback)); this.stream.write("" + commands + "\n"); } return this; }; Client.prototype.multi = function() { return new Multi(this); }; return Client; })(Api); module.exports = Client; }).call(this);