UNPKG

@sync-in/server

Version:

The secure, open-source platform for file storage, sharing, collaboration, and sync

72 lines (71 loc) 3.51 kB
/* * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com> * This file is part of Sync-in | The open source file sync and share solution * See the LICENSE file for licensing details */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "AppService", { enumerable: true, get: function() { return AppService; } }); const _common = require("@nestjs/common"); const _clusteradapter = require("@socket.io/cluster-adapter"); const _nodecluster = /*#__PURE__*/ _interop_require_default(require("node:cluster")); const _nodeprocess = /*#__PURE__*/ _interop_require_default(require("node:process")); const _configenvironment = require("./configuration/config.environment"); const _schedulerconstants = require("./infrastructure/scheduler/scheduler.constants"); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _ts_decorate(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; } let AppService = class AppService { static clusterize(bootstrap) { if (_nodecluster.default.isPrimary) { if (_configenvironment.configuration.websocket.adapter === 'cluster') { // setup connections between the workers (0, _clusteradapter.setupPrimary)(); } AppService.logger.log(`CPU cores : ${_configenvironment.configuration.server.workers}`); AppService.logger.log(`Master server started on ${_nodeprocess.default.pid}`); for(let i = 0; i < _configenvironment.configuration.server.workers; i++){ AppService.forkProcess(i === _configenvironment.configuration.server.workers - 1); } _nodecluster.default.on('exit', (worker, code, signal)=>{ AppService.logger.log(`Worker ${worker.process.pid} (code: ${code}, signal: ${signal}) died.`); if (_configenvironment.configuration.server.restartOnFailure) { const isScheduler = worker.process.pid === AppService.schedulerPID; AppService.logger.log(`Restarting ${isScheduler ? `(with Scheduler)` : ''}...`); AppService.forkProcess(isScheduler); } }); } else { AppService.logger.log(`Cluster server started on ${_nodeprocess.default.pid}`); bootstrap(); } } static forkProcess(isScheduler) { const w = _nodecluster.default.fork({ [_schedulerconstants.SCHEDULER_ENV]: isScheduler ? _schedulerconstants.SCHEDULER_STATE.ENABLED : _schedulerconstants.SCHEDULER_STATE.DISABLED }); if (isScheduler) { AppService.schedulerPID = w.process.pid; AppService.logger.log(`Scheduler enabled on Worker ${w.process.pid}`); } } }; AppService.logger = new _common.Logger(AppService.name); AppService = _ts_decorate([ (0, _common.Injectable)() ], AppService); //# sourceMappingURL=app.service.js.map