diff --git a/Projects/ProjectsSchema.json b/Projects/ProjectsSchema.json index 77ab0892a..af97aebab 100644 --- a/Projects/ProjectsSchema.json +++ b/Projects/ProjectsSchema.json @@ -346,10 +346,16 @@ } ], "functionLibraries": [ + { + "name": "Node JS Functions", + "propertyName": "nodeJSFunctions", + "functionName": "newSuperalgosFunctionLibrariesNodeJSFunctions", + "fileName": "NodeJSFunctions.js" + }, { "name": "Task Functions", "propertyName": "taskFunctions", - "functionName": "newSuperalgosFunctionLibrariesTastFunctions", + "functionName": "newSuperalgosFunctionLibrariesTaskFunctions", "fileName": "TaskFunctions.js" }, { diff --git a/Projects/Superalgos/TS/Function-Libraries/NodeJSFunctions.js b/Projects/Superalgos/TS/Function-Libraries/NodeJSFunctions.js new file mode 100644 index 000000000..9cc9f79d2 --- /dev/null +++ b/Projects/Superalgos/TS/Function-Libraries/NodeJSFunctions.js @@ -0,0 +1,39 @@ +exports.newSuperalgosFunctionLibrariesNodeJSFunctions = function () { + + let thisObject = { + exitProcess: exitProcess + } + + return thisObject + + function exitProcess() { + + if (global.unexpectedError !== undefined) { + TS.projects.superalgos.functionLibraries.taskFunctions.taskError(undefined, "An unexpected error caused the Task to stop.") + } + + if (global.SHUTTING_DOWN_PROCESS === true) { return } + global.SHUTTING_DOWN_PROCESS = true + + /* Signal that all sessions are stopping. */ + TS.projects.superalgos.functionLibraries.sessionFunctions.finalizeSessions() + + /* Cleaning Before Exiting. */ + clearInterval(global.HEARTBEAT_INTERVAL_HANDLER) + + if (global.TASK_NODE !== undefined) { + for (let i = 0; i < global.TASK_NODE.bot.processes.length; i++) { + let config = global.TASK_NODE.bot.processes[i].config + let process = global.TASK_NODE.bot.processes[i] + + let key = process.name + '-' + process.type + '-' + process.id + global.EVENT_SERVER_CLIENT_MODULE.raiseEvent(key, 'Stopped') // Meaning Process Stopped + } + } + + global.FINALIZE_LOGGERS() + //console.log("[INFO] Task Server -> " + global.TASK_NODE.name + " -> EXIT_NODE_PROCESS -> Task Server will stop in 10 seconds."); + + setTimeout(process.exit, 10000) // We will give 10 seconds to logs be written on file + } +} \ No newline at end of file diff --git a/Projects/Superalgos/TS/Function-Libraries/TaskFunctions.js b/Projects/Superalgos/TS/Function-Libraries/TaskFunctions.js index 865e6d2bb..430ed3fef 100644 --- a/Projects/Superalgos/TS/Function-Libraries/TaskFunctions.js +++ b/Projects/Superalgos/TS/Function-Libraries/TaskFunctions.js @@ -1,4 +1,4 @@ -exports.newSuperalgosFunctionLibrariesTastFunctions = function () { +exports.newSuperalgosFunctionLibrariesTaskFunctions = function () { let thisObject = { taskError: taskError diff --git a/TaskServer/Globals.js b/TaskServer/Globals.js index 1bf265a7b..054879cc4 100644 --- a/TaskServer/Globals.js +++ b/TaskServer/Globals.js @@ -28,36 +28,7 @@ exports.newGlobals = function () { global.SHUTTING_DOWN_PROCESS = false - global.EXIT_NODE_PROCESS = function exitProcess() { - if (global.unexpectedError !== undefined) { - TS.projects.superalgos.functionLibraries.taskFunctions.taskError(undefined, "An unexpected error caused the Task to stop.") - } - - if (global.SHUTTING_DOWN_PROCESS === true) { return } - global.SHUTTING_DOWN_PROCESS = true - - /* Signal that all sessions are stopping. */ - TS.projects.superalgos.functionLibraries.sessionFunctions.finalizeSessions() - - /* Cleaning Before Exiting. */ - clearInterval(global.HEARTBEAT_INTERVAL_HANDLER) - - if (global.TASK_NODE !== undefined) { - for (let i = 0; i < global.TASK_NODE.bot.processes.length; i++) { - let config = global.TASK_NODE.bot.processes[i].config - let process = global.TASK_NODE.bot.processes[i] - - let key = process.name + '-' + process.type + '-' + process.id - global.EVENT_SERVER_CLIENT_MODULE.raiseEvent(key, 'Stopped') // Meaning Process Stopped - } - } - - global.FINALIZE_LOGGERS() - //console.log("[INFO] Task Server -> " + global.TASK_NODE.name + " -> EXIT_NODE_PROCESS -> Task Server will stop in 10 seconds."); - - setTimeout(process.exit, 10000) // We will give 10 seconds to logs be written on file - } require('dotenv').config(); diff --git a/TaskServer/NodeJsProcess.js b/TaskServer/NodeJsProcess.js index 21bf49bac..0bec0c22f 100644 --- a/TaskServer/NodeJsProcess.js +++ b/TaskServer/NodeJsProcess.js @@ -12,14 +12,14 @@ exports.newNodeJsProcess = function newNodeJsProcess() { console.log('[ERROR] Task Server -> Node JS Process -> uncaughtException -> err.message = ' + err.message) console.log('[ERROR] Task Server -> Node JS Process -> uncaughtException -> err.stack = ' + err.stack) console.log(err.stack) - global.EXIT_NODE_PROCESS() + TS.projects.superalgos.functionLibraries.nodeJSFunctions.exitProcess() }) process.on('unhandledRejection', (reason, p) => { console.log('[ERROR] Task Server -> Node JS Process -> unhandledRejection -> reason = ' + JSON.stringify(reason)) console.log('[ERROR] Task Server -> Node JS Process -> unhandledRejection -> p = ' + JSON.stringify(p)) console.log(reason.stack) - global.EXIT_NODE_PROCESS() + TS.projects.superalgos.functionLibraries.nodeJSFunctions.exitProcess() }) process.on('exit', function (config) { diff --git a/TaskServer/ProcessInstance.js b/TaskServer/ProcessInstance.js index 584d3e031..5b68f1ef2 100644 --- a/TaskServer/ProcessInstance.js +++ b/TaskServer/ProcessInstance.js @@ -322,7 +322,7 @@ //console.log("[INFO] Task Server -> " + global.TASK_NODE.name + " -> exitProcessInstance -> Process #" + global.ENDED_PROCESSES_COUNTER + " from " + global.TOTAL_PROCESS_INSTANCES_CREATED + " exiting."); if (global.ENDED_PROCESSES_COUNTER === global.TOTAL_PROCESS_INSTANCES_CREATED) { - global.EXIT_NODE_PROCESS() + TS.projects.superalgos.functionLibraries.nodeJSFunctions.exitProcess() } } } catch (err) {