Commit 48871022e41a34b958336f963b5a813eb4ffccbb

Authored by Adhidarma Hadiwinoto
1 parent f456f6ed9c
Exists in master

less verbose

Showing 1 changed file with 0 additions and 1 deletions Inline Diff

1 var LRU = require('lru-cache'); 1 var LRU = require('lru-cache');
2 var winston = require('winston'); 2 var winston = require('winston');
3 3
4 var logger; 4 var logger;
5 var topupRequest; 5 var topupRequest;
6 var resendHandlers = LRU({max: 2000, maxAge: 1000 * 3600 * 36}); 6 var resendHandlers = LRU({max: 2000, maxAge: 1000 * 3600 * 36});
7 7
8 function init(options) { 8 function init(options) {
9 if (!options) { 9 if (!options) {
10 console.log('Undefined options, terminating....'); 10 console.log('Undefined options, terminating....');
11 process.exit(1); 11 process.exit(1);
12 } 12 }
13 13
14 if (options.config) { 14 if (options.config) {
15 config = options.config; 15 config = options.config;
16 } else { 16 } else {
17 console.log('Undefined options.config, terminating....') 17 console.log('Undefined options.config, terminating....')
18 process.exit(1); 18 process.exit(1);
19 } 19 }
20 20
21 if (options.topupRequest) { 21 if (options.topupRequest) {
22 topupRequest = options.topupRequest; 22 topupRequest = options.topupRequest;
23 } else { 23 } else {
24 console.log('Undefined options.topupRequest, terminating....') 24 console.log('Undefined options.topupRequest, terminating....')
25 process.exit(1); 25 process.exit(1);
26 } 26 }
27 27
28 if (options.logger) { 28 if (options.logger) {
29 logger = options.logger; 29 logger = options.logger;
30 } else { 30 } else {
31 logger = new winston.Logger({ 31 logger = new winston.Logger({
32 transports: [ 32 transports: [
33 new (winston.transports.Console)() 33 new (winston.transports.Console)()
34 ] 34 ]
35 }); 35 });
36 } 36 }
37 } 37 }
38 38
39 function cancel(task) { 39 function cancel(task) {
40 var requestId; 40 var requestId;
41 if (typeof task === 'string') { 41 if (typeof task === 'string') {
42 requestId = task; 42 requestId = task;
43 } else { 43 } else {
44 requestId = task.requestId; 44 requestId = task.requestId;
45 } 45 }
46 46
47 if (!requestId) { 47 if (!requestId) {
48 logger.warn('Invalid task on cancelResendDelay');
49 return; 48 return;
50 } 49 }
51 50
52 var oldHandler = resendHandlers.get(requestId); 51 var oldHandler = resendHandlers.get(requestId);
53 if (!oldHandler) { 52 if (!oldHandler) {
54 return; 53 return;
55 } 54 }
56 55
57 logger.verbose('Canceling resend delay', {task: oldHandler.task}); 56 logger.verbose('Canceling resend delay', {task: oldHandler.task});
58 57
59 try { 58 try {
60 if (oldHandler.handler) { 59 if (oldHandler.handler) {
61 clearTimeout(oldHandler.handler); 60 clearTimeout(oldHandler.handler);
62 } 61 }
63 } 62 }
64 catch(e) {}; 63 catch(e) {};
65 64
66 try { 65 try {
67 resendHandlers.del(requestId); 66 resendHandlers.del(requestId);
68 } 67 }
69 catch(e) {}; 68 catch(e) {};
70 } 69 }
71 70
72 function register(task) { 71 function register(task) {
73 if (!task.requestId) { 72 if (!task.requestId) {
74 logger.warn('Invalid task on resendDelay') 73 logger.warn('Invalid task on resendDelay')
75 return; 74 return;
76 } 75 }
77 76
78 if (!config || !config.globals || !Number(config.globals.auto_resend_delay_secs || !Number(config.globals.auto_resend_delay_max))) { 77 if (!config || !config.globals || !Number(config.globals.auto_resend_delay_secs || !Number(config.globals.auto_resend_delay_max))) {
79 return; 78 return;
80 } 79 }
81 80
82 var retry = config.globals.auto_resend_delay_max; 81 var retry = config.globals.auto_resend_delay_max;
83 var oldHandler = resendHandlers.get(task.requestId); 82 var oldHandler = resendHandlers.get(task.requestId);
84 if (oldHandler) { 83 if (oldHandler) {
85 retry = oldHandler.retry - 1; 84 retry = oldHandler.retry - 1;
86 cancel(task); 85 cancel(task);
87 } 86 }
88 87
89 if (retry <= 0) { 88 if (retry <= 0) {
90 logger.verbose('Resend delay retry exceeded', {task: task}); 89 logger.verbose('Resend delay retry exceeded', {task: task});
91 cancel(task); 90 cancel(task);
92 return; 91 return;
93 } 92 }
94 93
95 logger.verbose('Registering resend delay task request', {task: task, delay: config.globals.auto_resend_delay_secs, retry: retry}); 94 logger.verbose('Registering resend delay task request', {task: task, delay: config.globals.auto_resend_delay_secs, retry: retry});
96 var handlerData = { 95 var handlerData = {
97 handler: setTimeout(topupRequest, config.globals.auto_resend_delay_secs * 1000, task), 96 handler: setTimeout(topupRequest, config.globals.auto_resend_delay_secs * 1000, task),
98 task: task, 97 task: task,
99 retry: retry 98 retry: retry
100 } 99 }
101 100
102 resendHandlers.set(task.requestId, handlerData); 101 resendHandlers.set(task.requestId, handlerData);
103 } 102 }
104 103
105 104
106 exports.init = init; 105 exports.init = init;
107 exports.cancel = cancel; 106 exports.cancel = cancel;
108 exports.register = register; 107 exports.register = register;
109 108