93 lines
3.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
Сервис интеграции ПП Парус 8 с WEB API
Точка входа в сервер приложений
*/
//----------------------
// Подключение библиотек
//----------------------
require("module-alias/register");
const cfg = require("./config.js");
const lg = require("./core/logger.js");
const db = require("./core/db_connector.js");
const oq = require("./core/out_queue.js");
//--------------------------
// Глобальные идентификаторы
//--------------------------
let dbConn = new db.DBConnector(cfg.dbConnect); //Взаимодействие с БД
let logger = new lg.Logger(); //Протоколирование работы
let outQ = new oq.OutQueue(cfg.outgoing, dbConn, logger); //Отслеживание очереди исходящих
//----------------------------------------
// Управление процессом сервера приложений
//----------------------------------------
//При подключении к БД
const onDBConnected = async connection => {
logger.setDBConnector(dbConn);
await logger.info("Сервер приложений подключен к БД");
};
//При отключении от БД
const onDBDisconnected = async () => {
logger.removeDBConnector();
await logger.info("Сервер приложений отключен от БД");
};
//Запуск сервера
const run = async () => {
await logger.info("Запуск сервера приложений...");
dbConn.on(db.SEVT_DB_CONNECTOR_CONNECTED, onDBConnected);
dbConn.on(db.SEVT_DB_CONNECTOR_DISCONNECTED, onDBDisconnected);
await logger.info("Подключение сервера приложений к БД...");
try {
await dbConn.connect();
} catch (e) {
await logger.error("Ошибка подключения к БД: " + e.sCODE + ": " + e.sMessage);
stop();
return;
}
await outQ.startProcessing();
await logger.info("Сервер приложений запущен");
};
//Останов сервера
const stop = async () => {
await logger.warn("Останов сервера приложений...");
outQ.stopProcessing();
if (dbConn.bConnected) {
await logger.warn("Отключение сервера приложений от БД...");
try {
await dbConn.disconnect();
process.exit(0);
} catch (e) {
await logger.error("Ошибка отключения от БД: " + e.sCODE + ": " + e.sMessage);
process.exit(1);
}
} else {
process.exit(0);
}
};
//Обработка события "выход" жизненного цикла процесса
process.on("exit", code => {
//Сообщим о завершении процесса
logger.warn("Сервер приложений остановлен (код: " + code + ") ");
});
//Перехват CTRL + C (останова процесса)
process.on("SIGINT", () => {
//Инициируем выход из процесса
stop();
});
//------------
// Точка входа
//------------
//Старутем
run();