From 4a81b13bb0289ca5c389c33ff0bdbe9e32719f09 Mon Sep 17 00:00:00 2001 From: Adhidarma Hadiwinoto <me@adhisimon.org> Date: Mon, 19 Aug 2019 17:30:48 +0700 Subject: [PATCH] Modem chooser optimizer --- lib/modem-chooser.js | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/lib/modem-chooser.js b/lib/modem-chooser.js index bba2c88..57ab8db 100644 --- a/lib/modem-chooser.js +++ b/lib/modem-chooser.js @@ -22,27 +22,31 @@ function filterOutCandidates(candidates) { exports.chooser = async function chooser(destination, config) { const logger = global.KOMODO_LOGGER; - const prefixName = await prefixes.lookup(destination); - if (logger) logger.verbose('Choosing suitable senders', { destination, prefixName }); + let prefixName = await prefixes.lookup(destination); + if (typeof prefixName === 'string') { + prefixName = prefixName.toUpperCase(); + } + + if (logger) logger.verbose('MODEM-CHOOSER: Choosing suitable senders', { destination, prefixName }); let imsiSenders = []; - if (config.imsi_senders && config.imsi_senders.prefix_names && config.imsi_senders.prefix_names[prefixName]) { + if (config.imsi_senders && prefixName && config.imsi_senders.prefix_names && config.imsi_senders.prefix_names[prefixName]) { imsiSenders = filterOutCandidates(config.imsi_senders.prefix_names[prefixName]); - if (logger) logger.verbose('Suitable senders by prefix name', { destination, prefixName, imsiSenders }); + if (logger) logger.verbose('MODEM-CHOOSER: Try to use imsi senders by prefix name', { destination, prefixName, imsiSenders }); } if (!imsiSenders.length && config.imsi_senders.default && Array.isArray(config.imsi_senders.default) && config.imsi_senders.default.length) { imsiSenders = filterOutCandidates(config.imsi_senders.default); - if (logger) logger.verbose('Suitable default senders', { destination, prefixName, imsiSenders }); + if (logger) logger.verbose('MODEM-CHOOSER: Try to use default senders', { destination, prefixName, imsiSenders }); } if (!imsiSenders.length) { imsiSenders = filterOutCandidates([ await partnerLastSeen.get(destination) ]); - if (logger) logger.verbose('Suitable senders by last seen', { destination, prefixName, imsiSenders }); + if (logger) logger.verbose('MODEM-CHOOSER: Try to use sender by last seen', { destination, prefixName, imsiSenders }); } if (!imsiSenders.length) { - if (logger) logger.verbose('No suitable sender found', { destination, prefixName }); + if (logger) logger.warn('MODEM-CHOOSER: No suitable sender found', { destination, prefixName }); return; } @@ -50,7 +54,7 @@ exports.chooser = async function chooser(destination, config) { const idx = Math.round(Math.random() * (count - 1)); const imsiChoosed = imsiSenders[idx]; - if (logger) logger.verbose(`Choose modem with IMSI ${imsiChoosed}`, { destination, prefixName, imsiSenders }); + if (logger) logger.verbose(`MODEM-CHOOSER: gonna use modem with IMSI ${imsiChoosed}`, { destination, prefixName, imsiSenders }); return imsiChoosed; } \ No newline at end of file -- 1.9.0