-
Notifications
You must be signed in to change notification settings - Fork 0
/
mod_wrapper.js
74 lines (63 loc) · 1.77 KB
/
mod_wrapper.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
var argv = require('minimist')(process.argv.slice(2));
var mod = require(argv.module);
//console.log('argv:', argv);
//process.kill(argv.pid, 'SIGPIPE');
/*(function() {
var i = 0,
tmr = setInterval(() => {
i++;
console.log(JSON.stringify({func: 'callback_0', args:[i]}));
process.kill(argv.pid, 'SIGPIPE');
if(i === 3) {
clearInterval(tmr);
}
}, 1000);
})();*/
if(typeof mod === 'function') {
var tmp = {
log: console.log,
asyncprint: function(val, time, cb) {
setTimeout(() => {
cb('Returned: ' + val + ' after ' + time + ' ms');
}, time);
}
};
tmp[argv.module] = mod;
mod = tmp;
//console.log('self', 'function');
}
console.log(JSON.stringify({properties: Object.keys(mod).map((key) => {return key + ':' + typeof mod[key];})}));
/*Object.keys(mod).forEach((key) => {
console.log(key, typeof mod[key]);
});*/
var rl = require('readline').createInterface({
input: process.stdin,
output: process.stdout,
terminal: false
});
rl.on('line', function(line){
try {
data = JSON.parse(line);
} catch(e) {
console.error(e);
return false;
}
//console.log('Data from STDIN:', data);
//if(argv.pid) process.kill(argv.pid, 'SIGPIPE');
if(typeof mod[data.func] === 'function') {
if(!(data.args instanceof Array)) {
data.args = [data.args];
}
data.args.push(function() {
console.log(JSON.stringify({func: data.callback, args:arguments}));
if(argv.pid) process.kill(argv.pid, 'SIGPIPE');
});
console.log(JSON.stringify({
func: data.func,
ret: mod[data.func].apply(this, data.args) || null
}));
if(argv.pid) process.kill(argv.pid, 'SIGPIPE');
}
});
//console.log(JSON.stringify({"func":"log", "args":[1,2,3,'foo', 'bar']}));
//process.kill(process.pid, 'SIGINT');