Compare View

switch
from
...
to
 
Commits (2)

Changes

Showing 2 changed files Inline Diff

gateway/resend-delay.js
1 "use strict"; 1 "use strict";
2 2
3 var LRU = require('lru-cache'); 3 var LRU = require('lru-cache');
4 4
5 const config = require('./config'); 5 const config = require('./config');
6 const logger = require('./logger'); 6 const logger = require('./logger');
7 7
8 var topupRequest; 8 var topupRequest;
9 var resendHandlers = LRU({max: 2000, maxAge: 1000 * 3600 * 36}); 9 var resendHandlers = LRU({max: 2000, maxAge: 1000 * 3600 * 36});
10 10
11 function init(options) { 11 function init(options) {
12 if (options && options.request) { 12 if (options && options.request) {
13 request = options.request; 13 request = options.request;
14 } else { 14 } else {
15 logger.warn('Undefined options.request, terminating....'); 15 logger.warn('Undefined options.request, terminating....');
16 process.exit(1); 16 process.exit(1);
17 } 17 }
18 } 18 }
19 19
20 function cancel(task) { 20 function cancel(task) {
21 var requestId; 21 var requestId;
22 if (typeof task === 'string') { 22 if (typeof task === 'string') {
23 requestId = task; 23 requestId = task;
24 } else { 24 } else {
25 requestId = task.requestId; 25 requestId = task.requestId;
26 } 26 }
27 27
28 if (!requestId) { 28 if (!requestId) {
29 return; 29 return;
30 } 30 }
31 31
32 var oldHandler = resendHandlers.get(requestId); 32 var oldHandler = resendHandlers.get(requestId);
33 if (!oldHandler) { 33 if (!oldHandler) {
34 return; 34 return;
35 } 35 }
36 36
37 logger.verbose('Canceling resend delay', {task: oldHandler.task}); 37 logger.verbose('Canceling resend delay', {task: oldHandler.task});
38 38
39 try { 39 try {
40 if (oldHandler.handler) { 40 if (oldHandler.handler) {
41 clearTimeout(oldHandler.handler); 41 clearTimeout(oldHandler.handler);
42 } 42 }
43 } 43 }
44 catch(e) {}; 44 catch(e) {};
45 45
46 try { 46 try {
47 resendHandlers.del(requestId); 47 resendHandlers.del(requestId);
48 } 48 }
49 catch(e) {}; 49 catch(e) {};
50 } 50 }
51 51
52 function register(task) { 52 function register(task) {
53 if (!task.requestId) { 53 if (!task.requestId) {
54 logger.warn('Invalid task on resendDelay') 54 logger.warn('Invalid task on resendDelay')
55 return; 55 return;
56 } 56 }
57 57
58 if (!config || !config.auto_resend || !Number(config.auto_resend.delay_ms) || !Number(config.auto_resend.max_retry)) { 58 if (!config || !config.auto_resend || !Number(config.auto_resend.delay_ms) || !Number(config.auto_resend.max_retry)) {
59 return; 59 return;
60 } 60 }
61 61
62 var retry = config.auto_resend.max_retry; 62 var retry = config.auto_resend.max_retry;
63 var oldHandler = resendHandlers.get(task.requestId); 63 var oldHandler = resendHandlers.get(task.requestId);
64 if (oldHandler) { 64 if (oldHandler) {
65 retry = oldHandler.retry - 1; 65 retry = oldHandler.retry - 1;
66 cancel(task); 66 cancel(task);
67 } 67 }
68 68
69 if (retry <= 0) { 69 if (retry <= 0) {
70 logger.verbose('Resend delay retry exceeded', {task: task}); 70 logger.verbose('Resend delay retry exceeded', {task: task});
71 cancel(task); 71 cancel(task);
72 return; 72 return;
73 } 73 }
74 74
75 logger.verbose('Registering resend delay task request', {task: task, delay_ms: config.auto_resend.delay_ms, retry: retry}); 75 logger.verbose('Registering resend delay task request', {task: task, delay_ms: config.auto_resend.delay_ms, retry: retry});
76 var handlerData = { 76 var handlerData = {
77 handler: setTimeout(request, config.auto_resend.delay_ms, task), 77 handler: setTimeout(request, config.auto_resend.delay_ms, task),
78 task: task, 78 task: task,
79 retry: retry 79 retry: retry
80 } 80 }
81 81
82 resendHandlers.set(task.requestId, handlerData); 82 resendHandlers.set(task.requestId, handlerData);
83 } 83 }
84 84
85 exports.init = init; 85 exports.init = init;
86 exports.cancel = cancel; 86 exports.cancel = cancel;
87 exports.register = register; 87 exports.register = register;
88 88
1 { 1 {
2 "name": "komodo-sdk", 2 "name": "komodo-sdk",
3 "version": "1.6.6", 3 "version": "1.6.7",
4 "description": "SDK for Komodo", 4 "description": "SDK for Komodo",
5 "main": "index.js", 5 "main": "index.js",
6 "scripts": { 6 "scripts": {
7 "test": "mocha", 7 "test": "mocha",
8 "postversion": "git push && git push --tags" 8 "postversion": "git push && git push --tags"
9 }, 9 },
10 "repository": { 10 "repository": {
11 "type": "git", 11 "type": "git",
12 "url": "git@gitlab.kodesumber.com:komodo/komodo-sdk.git" 12 "url": "git@gitlab.kodesumber.com:komodo/komodo-sdk.git"
13 }, 13 },
14 "keywords": [ 14 "keywords": [
15 "ppob", 15 "ppob",
16 "payment", 16 "payment",
17 "komodo" 17 "komodo"
18 ], 18 ],
19 "author": "Adhidarma Hadiwinoto <gua@adhisimon.org>", 19 "author": "Adhidarma Hadiwinoto <gua@adhisimon.org>",
20 "license": "ISC", 20 "license": "ISC",
21 "dependencies": { 21 "dependencies": {
22 "lru-cache": "^4.1.1", 22 "lru-cache": "^4.1.1",
23 "request": "^2.81.0", 23 "request": "^2.81.0",
24 "strftime": "^0.10.0", 24 "strftime": "^0.10.0",
25 "winston": "^2.3.1", 25 "winston": "^2.3.1",
26 "winston-daily-rotate-file": "^1.4.6" 26 "winston-daily-rotate-file": "^1.4.6"
27 } 27 }
28 } 28 }
29 29