Files
Unify/framework/server/applicationManager.js

308 lines
5.5 KiB
JavaScript
Raw Normal View History

2025-12-25 11:16:59 +01:00
/*
Copyright (c) 2020, 2023, The Unified Company.
This code is part of Unify.
This program is free software; you can redistribute it and/or modify
it under the terms of the ESA Software Community License - Strong Copyleft LICENSE,
as published by the ESA.
See the ESA Software Community License - Strong Copyleft LICENSE, for more details.
https://unifyjs.org - The Unified Company
*/
import file from './file.js';
import socketManager from './socketManagerServer.js';
import core from './core.js';
import tools from '../unify/tools.js';
import defaultObject from '../unify/defaultObject.js';
import moduleLoader from '../server/moduleLoader.js';
import Console from '../server/console.js';
import path from 'path';
import process from 'process';
import imports from './imports.js';
import simplePath from "../unify/simplePath.js";
import { inspect } from 'util'
import deepclone from '../unify/clonedeep.js';
export default class applicationManager{
defaultSocketPort = 5002;
runExampleApplications = true;
defaultObject = new defaultObject();
moduleLoader = new moduleLoader();
serverAddress = "localhost";
serverPort = false;
httpsServer;
serverManager;
groomApplicationObject( application ) {
//console.log("before groom: ", tools.sizeOf( application ) )
//tools.groomApplicationObject( application );
//console.log("after groom: ", tools.sizeOf( application ) );
}
importApplication( applicationID ) {
var app = new imports[ applicationID ]();
this.groomApplicationObject( app );
this.defaultObject.agregateDefaultObject( app );
app.setApplicationID( applicationID );
return app;
}
setupCore( socket, applicationID ) {
var unifyCore = new core();
if( applicationID == 0 ) {
global.core = unifyCore;
}
unifyCore.socket = socket;
return unifyCore;
}
parseApplication( unifyCore, app, client ) {
unifyCore.parse( app, client );
unifyCore.createDependencyMap( client );
}
setGlobals( client, application ) {
global.objects = client.objects;
global.classObjects = client.classObjects;
global.dependencieMap = client.dependencieMap;
global.maxClients = application.maxClients;
global.cacheBuildSpeed = application.cacheBuildSpeed;
}
loadUnloadedFiles( client, unifyCore ) {
if( global.mode == "development" ) {
this.moduleLoader.client = client;
this.moduleLoader.loadModulesFromFiles( "/", unifyCore, client );
}
}
createTables( unifyCore ) {
if( global.mode == "development" ) {
unifyCore.tableManager.createTables();
}
}
createDummyClient() {
var client = new Object();
client.objects = new Array();
client.classObjects = new Array();
return client;
}
setApplicationGlobals( applicationID, unifyCore, socket ) {
global.cores[ applicationID ] = unifyCore;
global.sockets[ applicationID ] = socket;
}
prepareApplication( unifyCore, app, applicationID ) {
if( applicationID == 0 ) {
var client = this.createDummyClient();
this.parseApplication( unifyCore, app, client );
this.loadUnloadedFiles( client, unifyCore );
this.setGlobals( client, app );
this.createTables( unifyCore );
}
}
instantiateSocket( applicationID, app ) {
var socket = new socketManager( this.defaultSocketPort + applicationID );
socket.serverManager = this.serverManager;
socket.httpsServer = this.httpsServer;
socket.applicationURLArray = this.applicationURLArray;
var unifyCore = new core();
//unifyCore.prepareClone( app );
socket.setApplication( deepclone( app ) );
socket.setApplicationID( applicationID );
//socket.setApplication( app );
return socket;
}
setupSocketConnection( socket, unifyCore ) {
socket.create();
socket.core = unifyCore;
}
async runApplication( applicationThree, applicationID ) {
var app = this.importApplication( applicationID );
var socket = this.instantiateSocket( applicationID, app );
var unifyCore = this.setupCore( socket, applicationID );
this.prepareApplication( unifyCore, app, applicationID );
this.setupSocketConnection( socket, unifyCore );
this.setApplicationGlobals( applicationID, unifyCore, socket );
await unifyCore.findDuplicates( app );
return true;
}
setApplicationURL( applications ) {
if( this.runExampleApplications ) {
this.applicationURLArray = applications;
} else {
this.applicationURLArray = new Array( applications[0] );
}
}
createGlobals() {
global.applications = new Object();
global.cores = new Array();
}
getNumberOfApplication() {
if( this.runExampleApplications ) {
var number_applications = this.applications.length;
} else {
var number_applications = 1;
}
}
async runApplications( applications ) {
this.createGlobals();
this.setApplicationURL( applications );
// remove later
this.applications = applications;
var n = this.getNumberOfApplication();
for( var c = 0; c < 1; c++ ) {
var applicationThree = this.applications[ c ];
await this.runApplication( applicationThree, c );
}
return true;
}
}