diff --git a/resend-delay.js b/resend-delay.js deleted file mode 100644 index 05b5c55..0000000 --- a/resend-delay.js +++ /dev/null @@ -1,107 +0,0 @@ -var LRU = require('lru-cache'); -var winston = require('winston'); - -var logger; -var topupRequest; -var resendHandlers = LRU({max: 2000, maxAge: 1000 * 3600 * 36}); - -function init(options) { - if (!options) { - console.log('Undefined options, terminating....'); - process.exit(1); - } - - if (options.config) { - config = options.config; - } else { - console.log('Undefined options.config, terminating....') - process.exit(1); - } - - if (options.topupRequest) { - topupRequest = options.topupRequest; - } else { - console.log('Undefined options.topupRequest, terminating....') - process.exit(1); - } - - if (options.logger) { - logger = options.logger; - } else { - logger = new winston.Logger({ - transports: [ - new (winston.transports.Console)() - ] - }); - } -} - -function cancel(task) { - var requestId; - if (typeof task === 'string') { - requestId = task; - } else { - requestId = task.requestId; - } - - if (!requestId) { - return; - } - - var oldHandler = resendHandlers.get(requestId); - if (!oldHandler) { - return; - } - - logger.verbose('Canceling resend delay', {task: oldHandler.task}); - - try { - if (oldHandler.handler) { - clearTimeout(oldHandler.handler); - } - } - catch(e) {}; - - try { - resendHandlers.del(requestId); - } - catch(e) {}; -} - -function register(task) { - if (!task.requestId) { - logger.warn('Invalid task on resendDelay') - return; - } - - if (!config || !config.globals || !Number(config.globals.auto_resend_delay_secs || !Number(config.globals.auto_resend_delay_max))) { - return; - } - - var retry = config.globals.auto_resend_delay_max; - var oldHandler = resendHandlers.get(task.requestId); - if (oldHandler) { - retry = oldHandler.retry - 1; - cancel(task); - } - - if (retry <= 0) { - logger.verbose('Resend delay retry exceeded', {task: task}); - cancel(task); - return; - } - - logger.verbose('Registering resend delay task request', {task: task, delay: config.globals.auto_resend_delay_secs, retry: retry}); - var handlerData = { - handler: setTimeout(topupRequest, config.globals.auto_resend_delay_secs * 1000, task), - task: task, - retry: retry - } - - resendHandlers.set(task.requestId, handlerData); -} - - -exports.init = init; -exports.cancel = cancel; -exports.register = register; diff --git a/xmlout.js b/xmlout.js index 2fd3faa..d71a922 100644 --- a/xmlout.js +++ b/xmlout.js @@ -3,7 +3,7 @@ var url = require('url'); var math = require('mathjs'); var winston = require('winston'); var redis = require('redis'); -var resendDelay = require('./resend-delay.js'); +var resendDelay = require('sate24/resend-delay.js'); var LRU = require('lru-cache'); var aaa; @@ -264,11 +264,17 @@ function start(options) { createRedisClient(config.globals.redis_host, config.globals.redis_port); createServer(); - resendDelay.init({ + var resendDelayOptions = { config: config, - topupRequest: topupRequest, + topupRequest: checkStatus, logger: logger - }); + }; + + if (Number(config.globals.topup_request_on_resend_delay)) { + resendDelayOptions.topupRequest = topupRequest; + } + + resendDelay.init(resendDelayOptions); } function parseSN(message, _config) {