@u4/adbkit
Version:
A Typescript client for the Android Debug Bridge.
57 lines • 2.16 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const net_1 = __importDefault(require("net"));
const socket_1 = __importDefault(require("./socket"));
const events_1 = __importDefault(require("events"));
class Server extends events_1.default {
constructor(client, serial, options) {
super();
this.client = client;
this.serial = serial;
this.options = options;
this.connections = [];
this.on = (event, listener) => super.on(event, listener);
this.off = (event, listener) => super.off(event, listener);
this.once = (event, listener) => super.once(event, listener);
this.emit = (event, ...args) => super.emit(event, ...args);
this.server = net_1.default.createServer({
allowHalfOpen: true,
});
this.server.on('error', (err) => this.emit('error', err));
this.server.on('listening', () => this.emit('listening'));
this.server.on('close', () => this.emit('close'));
this.server.on('connection', (conn) => {
const socket = new socket_1.default(this.client, this.serial, conn, this.options);
this.connections.push(socket);
socket.on('error', (err) => {
// 'conn' is guaranteed to get ended
return this.emit('error', err);
});
socket.once('end', () => {
// 'conn' is guaranteed to get ended
return (this.connections = this.connections.filter((val) => val !== socket));
});
return this.emit('connection', socket);
});
}
listen(...args) {
this.server.listen(...args);
return this;
}
close() {
this.server.close();
return this;
}
end() {
const ref = this.connections;
for (let i = 0, len = ref.length; i < len; i++) {
ref[i].end();
}
return this;
}
}
exports.default = Server;
//# sourceMappingURL=server.js.map