From ee8f9a71b9b8ae65fe69a9a58f36e9f871f07098 Mon Sep 17 00:00:00 2001
From: Adhidarma Hadiwinoto <me@adhisimon.org>
Date: Thu, 18 Aug 2016 15:41:31 +0700
Subject: [PATCH] resendDelay pakai dari module sate24

---
 resend-delay.js | 107 --------------------------------------------------------
 xmlout.js       |  14 +++++---
 2 files changed, 10 insertions(+), 111 deletions(-)
 delete mode 100644 resend-delay.js

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) {
-- 
1.9.0