UNPKG

@ntrip/caster

Version:
70 lines (69 loc) 2.7 kB
"use strict"; /* * This file is part of the @ntrip/caster distribution (https://github.com/node-ntrip/caster). * Copyright (c) 2020 Nebojsa Cvetkovic. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.SocketClientTransport = void 0; const net = require("net"); const tls = require("tls"); const transport_1 = require("../transport"); class SocketClientTransport extends transport_1.SingleConnectionTransport { constructor(manager, options) { super(manager, options); this.options = options; } static new(options) { return (caster) => new SocketClientTransport(caster, options); } open() { this.socket = new net.Socket(); if (this.options.tls !== undefined) this.socket = new tls.TLSSocket(this.socket, this.options.tls); new Promise((resolve, reject) => { this.socket.once(this.socket instanceof tls.TLSSocket ? 'secureConnect' : 'connect', resolve); this.socket.once('error', reject); }).then(() => { try { this.connect({ type: this.options.type, mountpoint: this.options.mountpoint, source: this.options.remote.host + ':' + this.options.remote.port, stream: this.socket, str: this.options.str, gga: this.options.gga }); this.emit('open'); } catch (err) { this.emit('error', err); } }).catch(err => this.emit('error', err)); this.socket.connect({ host: this.options.remote.host, port: this.options.remote.port }); } close() { var _a; super.close(); (_a = this.socket) === null || _a === void 0 ? void 0 : _a.destroy(); } get description() { return `${this.options.tls === undefined ? 'tcp' : 'tls'}[${this.options.type}]`; } } exports.SocketClientTransport = SocketClientTransport;