UNPKG

@u4/adbkit

Version:

A Typescript client for the Android Debug Bridge.

51 lines 1.86 kB
import Net from 'node:net'; import Socket from './socket.js'; import EventEmitter from 'node:events'; export default class Server extends EventEmitter { 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.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(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; } } //# sourceMappingURL=server.js.map