UNPKG

smppjs

Version:
155 lines 6.21 kB
"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 = require("net"); const tls_1 = require("tls"); const PDU_1 = __importDefault(require("./PDU")); const dtos_1 = require("./dtos"); const logger_1 = require("./utils/logger"); class Session { get connected() { return this._connected; } set connected(value) { this._connected = value; } get closed() { return this.socket.closed; } get sequenceNumber() { this._sequenceNumber += 1; if (this._sequenceNumber > this.MAX_SMPP_SEQUENCE) { this._sequenceNumber = 1; this.logger.debug('sequence number wrapped around - avoid overflow'); } return this._sequenceNumber; } constructor(interfaceVersion, debug = false, timeout, secure) { this.interfaceVersion = interfaceVersion; this.debug = debug; this.timeout = timeout; this.secure = secure; this._sequenceNumber = 0; this._connected = false; this.MAX_SMPP_SEQUENCE = 0xffffffff; this.initSession(); this.initResponseEnd(); this.initResponseRead(); } initSession() { if (this.secure.tls === true) { this.socket = new tls_1.TLSSocket(new net_1.Socket(), Object.assign({ isServer: false }, this.secure.secureOptions)); } else { this.socket = new net_1.Socket(); } this.socket.setTimeout(this.timeout); this.logger = new logger_1.Logger(this.socket, { debug: this.debug }); this.PDU = new PDU_1.default(this.socket, { unsafeBuffer: this.secure.unsafeBuffer || false }); } initResponseEnd() { this.socket.on('end', () => { this.connected = false; this.logger.debug(`disconnect - forced - disconnected from smpp server.`); this.socket.destroy(); throw new Error('Server closed the conn.'); }); } initResponseRead() { this.socket.on('readable', () => { try { const data = this.socket.read(); if (data) { const pdu = this.PDU.readPdu(data); this.socket.emit('pdu', pdu); } } catch (error) { this.socket.emit('error', error); } }); } connect({ host, port }) { this.socket.connect(port, host, () => { this.connected = true; this.logger.debug(`connect - called - connected to smpp server using secure set to: ${this.secure.tls}`, { host, port }); }); } disconnect() { this.socket.destroy(); this.connected = false; this.logger.debug(`disconnect - called - disconnected to smpp server.`); return this.socket.closed; } on(eventName, callback) { this.socket.on(eventName, callback); } bindTransceiver(params) { this.logger.debug(`bindTransceiver - called`, params); if (!params.interfaceVersion) { params.interfaceVersion = this.interfaceVersion; } const dto = (0, dtos_1.getDTO)('bind_transceiver')(params); return this.PDU.call({ command: 'bind_transceiver', sequenceNumber: this.sequenceNumber, dto }); } bindReceiver(params) { this.logger.debug(`bindReceiver - called`, params); if (!params.interfaceVersion) { params.interfaceVersion = this.interfaceVersion; } const dto = (0, dtos_1.getDTO)('bind_receiver')(params); return this.PDU.call({ command: 'bind_receiver', sequenceNumber: this.sequenceNumber, dto }); } bindTransmitter(params) { this.logger.debug(`bindTransmitter - called`, params); if (!params.interfaceVersion) { params.interfaceVersion = this.interfaceVersion; } const dto = (0, dtos_1.getDTO)('bind_transmitter')(params); return this.PDU.call({ command: 'bind_transmitter', sequenceNumber: this.sequenceNumber, dto }); } submitSm(params) { this.logger.debug(`submitSm - called`, params); const dto = (0, dtos_1.getDTO)('submit_sm')(params); return this.PDU.call({ command: 'submit_sm', sequenceNumber: this.sequenceNumber, dto }); } dataSm(params) { this.logger.debug(`dataSm - called`, params); const dto = (0, dtos_1.getDTO)('data_sm')(params); return this.PDU.call({ command: 'data_sm', sequenceNumber: this.sequenceNumber, dto }); } querySm(params) { this.logger.debug(`querySm - called`, params); const dto = (0, dtos_1.getDTO)('query_sm')(params); return this.PDU.call({ command: 'query_sm', sequenceNumber: this.sequenceNumber, dto }); } cancelSm(params) { this.logger.debug(`cancelSm - called`, params); const dto = (0, dtos_1.getDTO)('cancel_sm')(params); return this.PDU.call({ command: 'cancel_sm', sequenceNumber: this.sequenceNumber, dto }); } replaceSm(params) { this.logger.debug(`replaceSm - called`, params); const dto = (0, dtos_1.getDTO)('replace_sm')(params); return this.PDU.call({ command: 'replace_sm', sequenceNumber: this.sequenceNumber, dto }); } enquireLink() { this.logger.debug(`enquireLink - called`); const dto = (0, dtos_1.getDTO)('enquire_link')({}); return this.PDU.call({ command: 'enquire_link', sequenceNumber: this.sequenceNumber, dto }); } unbind() { this.logger.debug(`unbind - called`); const dto = (0, dtos_1.getDTO)('unbind')({}); return this.PDU.call({ command: 'unbind', sequenceNumber: this.sequenceNumber, dto }); } deliverSmResp(params) { this.logger.debug(`deliverSmResp - called`, params); const dto = (0, dtos_1.getDTO)('deliver_sm_resp')(params); return this.PDU.call({ command: 'deliver_sm_resp', sequenceNumber: this.sequenceNumber, dto }); } } exports.default = Session; //# sourceMappingURL=session.js.map