process.chdir(__dirname);

const fs = require('fs');
const numCPUs = require('os').cpus().length;

const config = require('komodo-sdk/config');

global.KOMODO_LOG_LABEL = `KOMODO-CENTER@${config.name || 'HTTPGETX'}`;
process.title = global.KOMODO_LOG_LABEL;

const cluster = require('cluster');
const logger = require('tektrans-logger');
const sdNotify = require('komodo-sdk/sd-notify');

if (config.cluster && cluster.isMaster) {
    const numberOfChildren = config.cluster === true ? numCPUs + 1 : config.cluster;

    logger.info('Running on cluster mode', {
        masterPid: process.pid,
        numberOfChildren,
    });

    for (let i = 0; i < numberOfChildren; i += 1) {
        cluster.fork();
    }
} else {
    if (config.cluster) {
        logger.info(`Worker ${process.pid} started`);
    }

    // eslint-disable-next-line global-require
    require('./lib/apiserver');
    // eslint-disable-next-line global-require
    require('./lib/core-callback');
    // eslint-disable-next-line global-require
    require('./lib/partner-listener');
}

fs.writeFileSync('pid.txt', process.pid.toString());

sdNotify();