308 lines
5.5 KiB
JavaScript
308 lines
5.5 KiB
JavaScript
/*
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
}
|