molstar
Version:
A comprehensive macromolecular library.
66 lines • 3.07 kB
JavaScript
/**
* Copyright (c) 2018-2019 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author David Sehnal <david.sehnal@gmail.com>
*/
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var compression_1 = (0, tslib_1.__importDefault)(require("compression"));
var express_1 = (0, tslib_1.__importDefault)(require("express"));
var console_logger_1 = require("../../mol-util/console-logger");
var performance_monitor_1 = require("../../mol-util/performance-monitor");
var config_1 = require("./config");
var api_web_1 = require("./server/api-web");
var version_1 = require("./version");
function setupShutdown() {
if (config_1.ModelServerConfig.shutdownTimeoutVarianceMinutes > config_1.ModelServerConfig.shutdownTimeoutMinutes) {
console_logger_1.ConsoleLogger.log('Server', 'Shutdown timeout variance is greater than the timer itself, ignoring.');
}
else {
var tVar = 0;
if (config_1.ModelServerConfig.shutdownTimeoutVarianceMinutes > 0) {
tVar = 2 * (Math.random() - 0.5) * config_1.ModelServerConfig.shutdownTimeoutVarianceMinutes;
}
var tMs = (config_1.ModelServerConfig.shutdownTimeoutMinutes + tVar) * 60 * 1000;
console.log("----------------------------------------------------------------------------");
console.log(" The server will shut down in " + performance_monitor_1.PerformanceMonitor.format(tMs) + " to prevent slow performance.");
console.log(" Please make sure a daemon is running that will automatically restart it.");
console.log("----------------------------------------------------------------------------");
console.log();
setTimeout(function () {
// if (WebApi.ApiState.pendingQueries > 0) {
// WebApi.ApiState.shutdownOnZeroPending = true;
// } else {
console_logger_1.ConsoleLogger.log('Server', "Shut down due to timeout.");
process.exit(0);
// }
}, tMs);
}
}
(0, config_1.configureServer)();
function startServer() {
var app = (0, express_1.default)();
app.use((0, compression_1.default)({
level: 6, memLevel: 9, chunkSize: 16 * 16384,
filter: function (req, res) {
var ct = res.getHeader('Content-Type');
if (typeof ct === 'string' && ct.indexOf('tar+gzip') > 0)
return false;
return true;
}
}));
(0, api_web_1.initWebApi)(app);
var port = process.env.port || config_1.ModelServerConfig.defaultPort;
app.listen(port).setTimeout(config_1.ModelServerConfig.requestTimeoutMs);
console.log("Mol* ModelServer " + version_1.VERSION);
console.log("");
console.log("The server is running on port " + port + ".");
console.log("");
}
startServer();
if (config_1.ModelServerConfig.shutdownTimeoutMinutes > 0) {
setupShutdown();
}
//# sourceMappingURL=server.js.map
;