71 lines
2.3 KiB
JavaScript
71 lines
2.3 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
const net_1 = require("net");
|
|
const tls_1 = require("tls");
|
|
const utils_1 = require("../utils");
|
|
const AbstractConnector_1 = require("./AbstractConnector");
|
|
function isIIpcConnectionOptions(value) {
|
|
return value.path;
|
|
}
|
|
exports.isIIpcConnectionOptions = isIIpcConnectionOptions;
|
|
class StandaloneConnector extends AbstractConnector_1.default {
|
|
constructor(options) {
|
|
super();
|
|
this.options = options;
|
|
}
|
|
connect(_) {
|
|
const { options } = this;
|
|
this.connecting = true;
|
|
let connectionOptions;
|
|
if (isIIpcConnectionOptions(options)) {
|
|
connectionOptions = {
|
|
path: options.path,
|
|
};
|
|
}
|
|
else {
|
|
connectionOptions = {};
|
|
if (options.port != null) {
|
|
connectionOptions.port = options.port;
|
|
}
|
|
if (options.host != null) {
|
|
connectionOptions.host = options.host;
|
|
}
|
|
if (options.family != null) {
|
|
connectionOptions.family = options.family;
|
|
}
|
|
}
|
|
if (options.tls) {
|
|
Object.assign(connectionOptions, options.tls);
|
|
}
|
|
// TODO:
|
|
// We use native Promise here since other Promise
|
|
// implementation may use different schedulers that
|
|
// cause issue when the stream is resolved in the
|
|
// next tick.
|
|
// Should use the provided promise in the next major
|
|
// version and do not connect before resolved.
|
|
return new Promise((resolve, reject) => {
|
|
process.nextTick(() => {
|
|
if (!this.connecting) {
|
|
reject(new Error(utils_1.CONNECTION_CLOSED_ERROR_MSG));
|
|
return;
|
|
}
|
|
try {
|
|
if (options.tls) {
|
|
this.stream = tls_1.connect(connectionOptions);
|
|
}
|
|
else {
|
|
this.stream = net_1.createConnection(connectionOptions);
|
|
}
|
|
}
|
|
catch (err) {
|
|
reject(err);
|
|
return;
|
|
}
|
|
resolve(this.stream);
|
|
});
|
|
});
|
|
}
|
|
}
|
|
exports.default = StandaloneConnector;
|