fixe
authorHazbinFaulted <lucas.migeon@epitech.eu>
Mon, 25 Apr 2022 12:04:46 +0000 (14:04 +0200)
committerHazbinFaulted <lucas.migeon@epitech.eu>
Mon, 25 Apr 2022 12:04:46 +0000 (14:04 +0200)
src/charging-station/Bootstrap.ts
src/charging-station/ui-websocket-services/AbstractUIService.ts
src/worker/WorkerFactory.ts
src/worker/WorkerSet.ts

index d39c705c89e19334dd95d8654e5126fc40228406..725105cef9cfcfeb9ef11b1c8cc21ab4a91d13e7 100644 (file)
@@ -34,17 +34,18 @@ export default class Bootstrap {
   private constructor() {
     this.started = false;
     this.workerScript = path.join(
+      // wouldn't path.resolve(./ChargingStationWorker.js) faster & simpler ?
       path.resolve(__dirname, '../'),
       'charging-station',
       'ChargingStationWorker.js'
     );
-    this.initWorkerImplementation();
-    Configuration.getUIWebSocketServer().enabled &&
+    this.initWorkerImplementation(); // init thread
+    Configuration.getUIWebSocketServer().enabled && // create webSocket
       (this.uiWebSocketServer = new UIWebSocketServer({
         ...Configuration.getUIWebSocketServer().options,
         handleProtocols: UIServiceUtils.handleProtocols,
       }));
-    Configuration.getPerformanceStorage().enabled &&
+    Configuration.getPerformanceStorage().enabled && // create storage ??? but for what
       (this.storage = StorageFactory.getStorage(
         Configuration.getPerformanceStorage().type,
         Configuration.getPerformanceStorage().uri,
@@ -151,8 +152,10 @@ export default class Bootstrap {
           workerChoiceStrategy: Configuration.getWorkerPoolStrategy(),
         },
         messageHandler: async (msg: ChargingStationWorkerMessage) => {
+          console.log('initWorkerImplementation: messageHandler: ', msg);
           if (msg.id === ChargingStationWorkerMessageEvents.STARTED) {
             this.uiWebSocketServer.chargingStations.add(msg.data.id as string);
+            console.log(this.uiWebSocketServer.chargingStations);
           } else if (msg.id === ChargingStationWorkerMessageEvents.STOPPED) {
             this.uiWebSocketServer.chargingStations.delete(msg.data.id as string);
           } else if (msg.id === ChargingStationWorkerMessageEvents.PERFORMANCE_STATISTICS) {
index 680a73eb07ae0ea040396b1ab75df1165ef1e250..6755cd6e0fd3e1f8b2571cf43b7aad8f285304f7 100644 (file)
@@ -42,10 +42,12 @@ export default abstract class AbstractUIService {
   }
 
   protected buildProtocolMessage(command: ProtocolCommand, payload: JsonType): string {
+    console.log(JSON.stringify([command, payload])); // DEBUG
     return JSON.stringify([command, payload]);
   }
 
-  private handleListChargingStations(): Set<string> {
-    return this.uiWebSocketServer.chargingStations;
+  private handleListChargingStations(): string[] {
+    // FIXED
+    return Array.from(this.uiWebSocketServer.chargingStations);
   }
 }
index b297f42b231715643ef14761ca1c45a93295a5cf..7e69fc56d974469ecfb6574f1a2c4246cad2cddc 100644 (file)
@@ -21,16 +21,18 @@ export default class WorkerFactory {
     if (!isMainThread) {
       throw new Error('Trying to get a worker implementation outside the main thread');
     }
-    workerOptions = workerOptions ?? ({} as WorkerOptions);
+    workerOptions = workerOptions ?? ({} as WorkerOptions); // why not default parameter ?
     workerOptions.workerStartDelay =
-      workerOptions?.workerStartDelay ?? WorkerConstants.DEFAULT_WORKER_START_DELAY;
+      workerOptions?.workerStartDelay ?? WorkerConstants.DEFAULT_WORKER_START_DELAY; // why null safety  ?
     workerOptions.elementStartDelay =
       workerOptions?.elementStartDelay ?? WorkerConstants.DEFAULT_ELEMENT_START_DELAY;
     workerOptions.poolOptions = workerOptions?.poolOptions ?? ({} as PoolOptions<Worker>);
     workerOptions?.messageHandler &&
       // eslint-disable-next-line @typescript-eslint/no-misused-promises
       (workerOptions.poolOptions.messageHandler = workerOptions.messageHandler);
-    let workerImplementation: WorkerAbstract<T> = null;
+    console.log('before');
+    let workerImplementation: WorkerAbstract<T> = null; // enabling strictNullChecks would be safer ?
+    console.log(workerImplementation);
     switch (workerProcessType) {
       case WorkerProcessType.WORKER_SET:
         workerOptions.elementsPerWorker =
index 6e890902d8f8c769e726a262e5c013c39334b604..782284f3d00447286ad13ca62fb00093be9df243 100644 (file)
@@ -54,7 +54,7 @@ export default class WorkerSet extends WorkerAbstract<WorkerData> {
       id: WorkerMessageEvents.START_WORKER_ELEMENT,
       data: elementData,
     });
-    this.getLastWorkerSetElement().numberOfWorkerElements++;
+    this.getLastWorkerSetElement().numberOfWorkerElements++; // should there not be a hanshake to be safer ?
     // Start element sequentially to optimize memory at startup
     if (this.workerOptions.elementStartDelay > 0) {
       await Utils.sleep(this.workerOptions.elementStartDelay);