UNPKG

@node-pigpio/core

Version:
46 lines (45 loc) 1.55 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createRequestSocket = void 0; const net_1 = __importDefault(require("net")); const events_1 = require("events"); const PromiseQueue_1 = require("./utils/PromiseQueue"); const Request_1 = require("./Request"); class SocketImpl { constructor() { this.requestQueue = new PromiseQueue_1.PromiseQueue(); this.connected = false; this.closeHandler = () => { this.connected = false; }; this.sock = new net_1.default.Socket(); } async connect(port, host) { const { sock } = this; sock.connect(port, host); sock.once('close', this.closeHandler); await events_1.once(sock, 'connect'); this.connected = true; sock.setNoDelay(); } async request(request, timeout) { const { sock } = this; const promise = Request_1.requestFactory(sock, request, timeout); return this.requestQueue.add(promise); } // eslint-disable-next-line @typescript-eslint/require-await async close() { this.sock.off('close', this.closeHandler); this.connected = false; this.sock.destroy(); } } const createRequestSocket = async (port, host) => { const sock = new SocketImpl(); await sock.connect(port, host); return sock; }; exports.createRequestSocket = createRequestSocket;