const nodefony = require("nodefony");
const path = require("path");
const Server = require(path.resolve("src", "node", "services", "servers", "http.js"));
class Service extends nodefony.Service {
constructor(environment = "production", debug = false) {
super("Microservice");
this.environment = environment;
this.debug = debug;
// init logger
this.initSyslog();
this.log(`Environment = ${environment} Debug = ${debug}`);
this.settings = require(path.resolve("config", "config.js"));
// start
this.start();
}
async start() {
return await this.startHttpServer();
}
async startHttpServer(){
const http = new Server(this);
// add in service container
this.set("http", http);
return await http.start();
}
stop(code) {
return new Promise((resolve, reject)=>{
process.nextTick(() => {
this.log("Life Cycle Terminate");
try {
if (code === 0) {
process.exitCode = code;
}
return resolve(process.exit(code));
} catch (e) {
this.log(e, "ERROR");
return reject(e);
}
});
});
}
}
module.exports = new Service(process.env.NODE_ENV, process.env.DEBUG);