X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Futils%2FConfiguration.ts;h=8c13db91fa84c0425eb1d5ebcd0c3d0cce46bbea;hb=b3aa9f53cdbf6dac72396c4392e11dcc4c37df65;hp=c185133a0a1d92a410a427aba0eee8517c05bb30;hpb=8114d10e3893e96bb725ce2fca9744429ee4b75b;p=e-mobility-charging-stations-simulator.git diff --git a/src/utils/Configuration.ts b/src/utils/Configuration.ts index c185133a..8c13db91 100644 --- a/src/utils/Configuration.ts +++ b/src/utils/Configuration.ts @@ -3,18 +3,21 @@ import path from 'path'; import { fileURLToPath } from 'url'; import chalk from 'chalk'; +import { WorkerChoiceStrategies } from 'poolifier'; -import ConfigurationData, { - StationTemplateUrl, - StorageConfiguration, +import { + type ConfigurationData, + type StationTemplateUrl, + type StorageConfiguration, SupervisionUrlDistribution, - UIServerConfiguration, - WorkerConfiguration, + type UIServerConfiguration, + type WorkerConfiguration, } from '../types/ConfigurationData'; -import { EmptyObject } from '../types/EmptyObject'; -import { HandleErrorParams } from '../types/Error'; +import type { EmptyObject } from '../types/EmptyObject'; +import type { HandleErrorParams } from '../types/Error'; import { FileType } from '../types/FileType'; import { StorageType } from '../types/Storage'; +import { ApplicationProtocol } from '../types/UIProtocol'; import { WorkerProcessType } from '../types/Worker'; import WorkerConstants from '../worker/WorkerConstants'; import Constants from './Constants'; @@ -57,10 +60,11 @@ export default class Configuration { ); } let uiServerConfiguration: UIServerConfiguration = { - enabled: true, + enabled: false, + type: ApplicationProtocol.WS, options: { - host: Constants.DEFAULT_UI_WEBSOCKET_SERVER_HOST, - port: Constants.DEFAULT_UI_WEBSOCKET_SERVER_PORT, + host: Constants.DEFAULT_UI_SERVER_HOST, + port: Constants.DEFAULT_UI_SERVER_PORT, }, }; if (Configuration.objectHasOwnProperty(Configuration.getConfig(), 'uiServer')) { @@ -69,6 +73,10 @@ export default class Configuration { Configuration.getConfig().uiServer ); } + if (Configuration.isCFEnvironment() === true) { + delete uiServerConfiguration.options.host; + uiServerConfiguration.options.port = parseInt(process.env.PORT); + } return uiServerConfiguration; } @@ -210,7 +218,8 @@ export default class Configuration { ) ? Configuration.getConfig().workerPoolMaxSize : WorkerConstants.DEFAULT_POOL_MAX_SIZE, - poolStrategy: Configuration.getConfig().workerPoolStrategy, + poolStrategy: + Configuration.getConfig().workerPoolStrategy ?? WorkerChoiceStrategies.ROUND_ROBIN, }; if (Configuration.objectHasOwnProperty(Configuration.getConfig(), 'worker')) { workerConfiguration = { ...workerConfiguration, ...Configuration.getConfig().worker }; @@ -370,6 +379,10 @@ export default class Configuration { } } + private static isCFEnvironment(): boolean { + return process.env.VCAP_APPLICATION !== undefined; + } + private static getDefaultPerformanceStorageUri(storageType: StorageType) { const SQLiteFileName = `${Constants.DEFAULT_PERFORMANCE_RECORDS_DB_NAME}.db`; switch (storageType) { @@ -389,7 +402,15 @@ export default class Configuration { } private static isObject(item): boolean { - return item && typeof item === 'object' && !Array.isArray(item); + return item && typeof item === 'object' && Array.isArray(item) === false; + } + + private static objectHasOwnProperty(object: unknown, property: string): boolean { + return Object.prototype.hasOwnProperty.call(object, property) as boolean; + } + + private static isUndefined(obj: unknown): boolean { + return typeof obj === 'undefined'; } private static deepMerge(target: object, ...sources: object[]): object { @@ -415,14 +436,6 @@ export default class Configuration { return Configuration.deepMerge(target, ...sources); } - private static objectHasOwnProperty(object: unknown, property: string): boolean { - return Object.prototype.hasOwnProperty.call(object, property) as boolean; - } - - private static isUndefined(obj: unknown): boolean { - return typeof obj === 'undefined'; - } - private static handleFileException( logPrefix: string, fileType: FileType,