diff --git a/center.js b/center.js index 96e543d..63be4da 100644 --- a/center.js +++ b/center.js @@ -3,7 +3,7 @@ const commandLineArgs = require("command-line-args"); const commandLineUsage = require("command-line-usage"); const NanoTimer = require("nanotimer"); const { createBaseLogger, createSessionLogger } = require("./logger"); -const { verifyDefaults, verifyExists } = require("./utils"); +const { verifyDefaults, verifyExists, sendPdu } = require("./utils"); const { centerOptions } = require("./cliOptions"); const crypto = require("crypto"); const { MetricManager } = require("./metrics/metricManager"); @@ -57,23 +57,22 @@ function startInterval(session, sessionLogger, rxMetrics) { sendTimer.clearInterval(); } else if (inFlight < options.window) { sessionLogger.info(`Sending message ${sent + 1}/${options.messagecount}`); - session.deliver_sm( - { - source_addr: options.source, - destination_addr: options.destination, - short_message: options.message, - }, - function (pdu) { - inFlight--; - if (pdu.command_status === 0) { - sessionLogger.info(`Received response with id ${pdu.message_id}`); - success++; - } else { - sessionLogger.warn(`Message failed with id ${pdu.message_id}`); - failed++; - } - } - ); + const pdu = new smpp.PDU("deliver_sm", { + source_addr: options.source, + destination_addr: options.destination, + short_message: options.message, + }); + + sendPdu(session, pdu).then(resp => { + inFlight--; + sessionLogger.info(`Received response with id ${resp.message_id}`); + success++; + }).catch(resp => { + inFlight--; + sessionLogger.warn(`Message failed with id ${resp.message_id}`); + failed++; + }); + rxMetrics.AddEvent(); sent++; inFlight++; diff --git a/client.js b/client.js index 297faa2..4291e7a 100644 --- a/client.js +++ b/client.js @@ -3,7 +3,7 @@ const commandLineArgs = require("command-line-args"); const commandLineUsage = require("command-line-usage"); const NanoTimer = require("nanotimer"); const { createBaseLogger, createSessionLogger } = require("./logger"); -const { verifyDefaults, verifyExists } = require("./utils"); +const { verifyDefaults, verifyExists, sendPdu } = require("./utils"); const { clientOptions } = require("./cliOptions"); const { MetricManager } = require("./metrics/metricManager"); @@ -58,26 +58,24 @@ function startInterval(session, sessionLogger, metrics) { metrics.progress.bar.increment(); metrics.window.bar.increment(); } - session.submit_sm( - { - source_addr: options.source, - destination_addr: options.destination, - short_message: options.message, - }, - function (pdu) { - if (metrics.window?.bar) { - metrics.window.bar.update(metrics.window.bar.value - 1); - } + const pdu = new smpp.PDU("submit_sm", { + source_addr: options.source, + destination_addr: options.destination, + short_message: options.message, + }); + + sendPdu(session, pdu) + .then((resp) => { inFlight--; - if (pdu.command_status === 0) { - sessionLogger.info(`Received response with id ${pdu.message_id}`); - success++; - } else { - sessionLogger.warn(`Message failed with id ${pdu.message_id}`); - failed++; - } - } - ); + sessionLogger.info(`Received response with id ${resp.message_id}`); + success++; + }) + .catch((resp) => { + inFlight--; + sessionLogger.warn(`Message failed with id ${resp.message_id}`); + failed++; + }); + if (metrics.txMetrics) { metrics.txMetrics.AddEvent(); } diff --git a/utils.js b/utils.js index 04b54b1..ee75520 100644 --- a/utils.js +++ b/utils.js @@ -14,4 +14,16 @@ function verifyDefaults(options, definitions) { } } -module.exports = { verifyDefaults, verifyExists }; +async function sendPdu(session, pdu) { + return new Promise((resolve, reject) => { + session.send(pdu, (respPdu) => { + if (respPdu.command_status === 0) { + resolve(respPdu); + } else { + reject(respPdu); + } + }); + }); +} + +module.exports = { verifyDefaults, verifyExists, sendPdu };