This repository has been archived by the owner on Jun 7, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 5
/
index.js
93 lines (68 loc) · 1.88 KB
/
index.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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
var util = require ("util");
var serviceWrap;
var runInitialised = false;
function getServiceWrap () {
if (! serviceWrap)
serviceWrap = require ("./build/Release/service");
return serviceWrap;
}
function add (name, options) {
var serviceArgs = [];
var displayName = (options && options.displayName)
? options.displayName
: name;
var nodePath = (options && options.nodePath)
? options.nodePath
: process.execPath;
var programPath = (options && options.programPath)
? options.programPath
: process.argv[1];
serviceArgs.push (nodePath);
if (options && options.nodeArgs)
for (var i = 0; i < options.nodeArgs.length; i++)
serviceArgs.push (options.nodeArgs[i]);
serviceArgs.push (programPath);
if (options && options.programArgs)
for (var i = 0; i < options.programArgs.length; i++)
serviceArgs.push (options.programArgs[i]);
for (var i = 0; i < serviceArgs.length; i++)
serviceArgs[i] = "\"" + serviceArgs[i] + "\"";
var servicePath = serviceArgs.join (" ");
getServiceWrap ().add (name, displayName, servicePath);
return this;
}
function isStopRequested () {
return getServiceWrap ().isStopRequested ();
}
function remove (name) {
getServiceWrap ().remove (name);
}
function run (stdoutLogStream, stderrLogStream, stopCallback) {
if (! stopCallback) {
stopCallback = stderrLogStream;
stderrLogStream = stdoutLogStream;
}
if (! runInitialised) {
process.__defineGetter__('stdout', function() {
return stdoutLogStream;
});
process.__defineGetter__('stderr', function() {
return stderrLogStream;
});
setInterval (function () {
if (isStopRequested ()) {
stopCallback ();
}
}, 2000);
runInitialised = true;
}
getServiceWrap ().run ();
}
function stop (rcode) {
getServiceWrap ().stop (rcode);
process.exit (rcode);
}
exports.add = add;
exports.remove = remove;
exports.run = run;
exports.stop = stop;