pandora
Version:
A powerful and lightweight application manager for Node.js applications powered by TypeScript.
62 lines • 2.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const Daemon_1 = require("./Daemon");
const pandora_env_1 = require("pandora-env");
const const_1 = require("../const");
const pandora_metrics_1 = require("pandora-metrics");
const GlobalConfigProcessor_1 = require("../universal/GlobalConfigProcessor");
const LoggerBroker_1 = require("../universal/LoggerBroker");
const pandora_metrics_2 = require("pandora-metrics");
/**
* Class DaemonBootstrap
*/
class DaemonBootstrap {
constructor() {
this.daemonLogger = LoggerBroker_1.getDaemonLogger();
this.globalConfigProcessor = GlobalConfigProcessor_1.GlobalConfigProcessor.getInstance();
this.globalConfig = this.globalConfigProcessor.getAllProperties();
}
/**
* Start the daemon
* @return {Promise<void>}
*/
start() {
// Register a default env for daemon process
const daemonEnvironment = new pandora_env_1.DefaultEnvironment({
processName: 'daemon',
appName: pandora_metrics_1.MetricsConstants.METRICS_DEFAULT_APP,
pandoraLogsDir: LoggerBroker_1.getPandoraLogsDir()
});
daemonEnvironment.set(const_1.PANDORA_GLOBAL_CONFIG, this.globalConfig);
pandora_env_1.EnvironmentUtil.getInstance().setCurrentEnvironment(daemonEnvironment);
this.daemon = new Daemon_1.Daemon();
// Start daemon
return this.daemon.start().then(() => {
// Set daemon to metrics
pandora_metrics_2.MetricsInjectionBridge.setDaemon(this.daemon);
if (process.send) {
process.send(const_1.DAEMON_READY);
}
}).catch(err => {
this.daemonLogger.error(err);
throw err;
});
}
/**
* Stop the Daemon
* @return {Promise<void>}
*/
stop() {
return this.daemon.stop();
}
}
exports.DaemonBootstrap = DaemonBootstrap;
function cmd() {
const daemonBootstrap = new DaemonBootstrap;
return daemonBootstrap.start();
}
exports.cmd = cmd;
if (require.main === module) {
cmd();
}
//# sourceMappingURL=DaemonBootstrap.js.map