X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2FAutomaticTransactionGenerator.ts;h=0e0982a201dd7165f39212dc3acaba7b8e893002;hb=1d4ad05181ef93c9ea15c25fbd13c6ea22ff35dc;hp=3f5b03c12cebf30c53822b6f6b998d08c810a9a4;hpb=16cd35ad01b48377d39077d8b30e6c2055a5f8ea;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/AutomaticTransactionGenerator.ts b/src/charging-station/AutomaticTransactionGenerator.ts index 3f5b03c1..0e0982a2 100644 --- a/src/charging-station/AutomaticTransactionGenerator.ts +++ b/src/charging-station/AutomaticTransactionGenerator.ts @@ -2,7 +2,7 @@ import { AuthorizationStatus, AuthorizeResponse, StartTransactionResponse, StopTransactionReason, StopTransactionResponse } from '../types/ocpp/Transaction'; -import ChargingStation from './ChargingStation'; +import type ChargingStation from './ChargingStation'; import Constants from '../utils/Constants'; import PerformanceStatistics from '../performance/PerformanceStatistics'; import { Status } from '../types/AutomaticTransactionGenerator'; @@ -10,17 +10,25 @@ import Utils from '../utils/Utils'; import logger from '../utils/Logger'; export default class AutomaticTransactionGenerator { + private static readonly instances: Map = new Map(); public started: boolean; private readonly chargingStation: ChargingStation; private readonly connectorsStatus: Map; - constructor(chargingStation: ChargingStation) { + private constructor(chargingStation: ChargingStation) { this.chargingStation = chargingStation; this.connectorsStatus = new Map(); this.stopConnectors(); this.started = false; } + public static getInstance(chargingStation: ChargingStation): AutomaticTransactionGenerator { + if (!AutomaticTransactionGenerator.instances.has(chargingStation.id)) { + AutomaticTransactionGenerator.instances.set(chargingStation.id, new AutomaticTransactionGenerator(chargingStation)); + } + return AutomaticTransactionGenerator.instances.get(chargingStation.id); + } + public start(): void { if (this.started) { logger.error(`${this.logPrefix()} trying to start while already started`); @@ -67,7 +75,7 @@ export default class AutomaticTransactionGenerator { break; } if (!this.chargingStation.isInAcceptedState()) { - logger.error(this.logPrefix(connectorId) + ' entered in transaction loop while the charging station is in accepted state'); + logger.error(this.logPrefix(connectorId) + ' entered in transaction loop while the charging station is not in accepted state'); this.stopConnector(connectorId); break; }