rocksteady
Version:
Drink blazin' electric death, downtime! Fast, zero-downtime apps for production enviroments.
97 lines (76 loc) • 2.18 kB
JavaScript
// Generated by CoffeeScript 1.9.1
var DROP_PRIVILEGES, FORCE_KILL_TIMEOUT, HOST, NODE_ENV, PORT, SERVER_MODULE, SET_GID, SET_UID, SOCKET_TIMEOUT, err, http, postmortem, ref, server, shutdown, shuttingDown, utils;
http = require('http');
utils = require('./utils');
postmortem = require('postmortem');
ref = process.env, NODE_ENV = ref.NODE_ENV, FORCE_KILL_TIMEOUT = ref.FORCE_KILL_TIMEOUT, HOST = ref.HOST, PORT = ref.PORT, SERVER_MODULE = ref.SERVER_MODULE, SOCKET_TIMEOUT = ref.SOCKET_TIMEOUT, DROP_PRIVILEGES = ref.DROP_PRIVILEGES, SET_GID = ref.SET_GID, SET_UID = ref.SET_UID;
try {
require.resolve(SERVER_MODULE);
} catch (_error) {
err = _error;
require('coffee-script');
}
postmortem.install();
shuttingDown = false;
server = null;
shutdown = function() {
if (shuttingDown) {
return;
}
shuttingDown = true;
server.close(function() {
return process.exit(0);
});
return setTimeout(function() {
return process.exit(0);
}, FORCE_KILL_TIMEOUT);
};
process.on('uncaughtException', function(err) {
process.send({
type: 'error',
error: utils.serialize(err)
});
return shutdown();
});
process.on('message', function(message) {
if (shuttingDown || !(message != null ? message.type : void 0)) {
return;
}
switch (message.type) {
case 'stop':
return shutdown();
}
});
if (NODE_ENV === 'development') {
require('vigil').vm(function(filename, stats) {
return process.send({
type: 'watch',
filename: filename,
isDirectory: stats.isDirectory()
});
});
}
server = require(SERVER_MODULE);
if (NODE_ENV === 'development') {
server = require('bebop').middleware({
attach: server,
port: 3456
});
}
if (!(server instanceof http.Server)) {
server = http.createServer(server);
}
server.listen(PORT, HOST, function() {
if ((JSON.parse(DROP_PRIVILEGES)) && process.getgid() === 0) {
process.setgid(SET_GID);
return process.setuid(SET_UID);
}
});
server.setTimeout((parseInt(SOCKET_TIMEOUT, 10)) * 1000);
process.on('SIGTERM', function() {
return shutdown();
});
process.on('SIGINT', function() {
return shutdown();
});
//# sourceMappingURL=worker.js.map