/
geddy.js
65 lines (51 loc) · 1.19 KB
/
geddy.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
var geddy = global.geddy || {}
, cluster = require('cluster')
, master
, worker
, utils = require('utilities')
, pkg = require('../package')
, App;
geddy.isMaster = cluster.isMaster;
utils.mixin(geddy, {version: pkg.version});
utils.mixin(geddy, utils);
utils.mixin(geddy, new (function () {
var _started = false
, _opts = {};
this.config = function (o) {
_opts = o;
};
this.start = function () {
var m
, w
, app;
// No repeatsies
if (_started) {
return;
}
// Master-process, start workers
if (geddy.isMaster) {
master = require('../lib/cluster/master');
m = new master.Master();
m.start(_opts);
}
// Worker-process, start up an app
else {
App = require('./app.js').App;
worker = require('../lib/cluster/worker');
w = new worker.Worker();
geddy.worker = w;
w.init(function () {
utils.mixin(geddy, w);
app = new App();
app.init(function () {
w.startServer();
utils.mixin(geddy, app);
});
});
}
};
})());
// Set the One True Geddy Global
global.geddy = geddy;
// Also allow export/local
module.exports = geddy;