const moduleName = 'OCPPIncomingRequestService'
export abstract class OCPPIncomingRequestService extends EventEmitter {
- private static instance: null | OCPPIncomingRequestService = null
+ private static readonly instances = new Map<
+ new () => OCPPIncomingRequestService,
+ OCPPIncomingRequestService
+ >()
+
protected readonly ajv: Ajv
protected abstract payloadValidatorFunctions: Map<
IncomingRequestCommand,
}
public static getInstance<T extends OCPPIncomingRequestService>(this: new () => T): T {
- OCPPIncomingRequestService.instance ??= new this()
- return OCPPIncomingRequestService.instance as T
+ if (!OCPPIncomingRequestService.instances.has(this)) {
+ OCPPIncomingRequestService.instances.set(this, new this())
+ }
+ return OCPPIncomingRequestService.instances.get(this) as T
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-unnecessary-type-parameters
}
export abstract class OCPPRequestService {
- private static instance: null | OCPPRequestService = null
+ private static readonly instances = new Map<
+ new (ocppResponseService: OCPPResponseService) => OCPPRequestService,
+ OCPPRequestService
+ >()
+
protected readonly ajv: Ajv
protected abstract payloadValidatorFunctions: Map<RequestCommand, ValidateFunction<JsonType>>
private readonly ocppResponseService: OCPPResponseService
this: new (ocppResponseService: OCPPResponseService) => T,
ocppResponseService: OCPPResponseService
): T {
- OCPPRequestService.instance ??= new this(ocppResponseService)
- return OCPPRequestService.instance as T
+ if (!OCPPRequestService.instances.has(this)) {
+ OCPPRequestService.instances.set(this, new this(ocppResponseService))
+ }
+ return OCPPRequestService.instances.get(this) as T
}
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters
const moduleName = 'OCPPResponseService'
export abstract class OCPPResponseService {
- private static instance: null | OCPPResponseService = null
+ private static readonly instances = new Map<new () => OCPPResponseService, OCPPResponseService>()
public abstract incomingRequestResponsePayloadValidateFunctions: Map<
IncomingRequestCommand,
ValidateFunction<JsonType>
}
public static getInstance<T extends OCPPResponseService>(this: new () => T): T {
- OCPPResponseService.instance ??= new this()
- return OCPPResponseService.instance as T
+ if (!OCPPResponseService.instances.has(this)) {
+ OCPPResponseService.instances.set(this, new this())
+ }
+ return OCPPResponseService.instances.get(this) as T
}
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters