// Partial Copyright Jerome Benoit. 2021-2023. All Rights Reserved.
+import { type PerformanceEntry, PerformanceObserver, performance } from 'node:perf_hooks';
import type { URL } from 'node:url';
-import { PerformanceEntry, PerformanceObserver, performance } from 'perf_hooks';
-import { parentPort } from 'worker_threads';
+import { parentPort } from 'node:worker_threads';
-import { MessageChannelUtils } from '../charging-station/MessageChannelUtils';
-import { MessageType } from '../types/ocpp/MessageType';
-import type { IncomingRequestCommand, RequestCommand } from '../types/ocpp/Requests';
-import type { Statistics, TimeSeries } from '../types/Statistics';
-import { CircularArray, DEFAULT_CIRCULAR_ARRAY_SIZE } from '../utils/CircularArray';
-import Configuration from '../utils/Configuration';
-import logger from '../utils/Logger';
-import Utils from '../utils/Utils';
+import { MessageChannelUtils } from '../charging-station';
+import {
+ type IncomingRequestCommand,
+ MessageType,
+ type RequestCommand,
+ type Statistics,
+ type TimeSeries,
+} from '../types';
+import { CircularArray, Configuration, Constants, Utils, logger } from '../utils';
-export default class PerformanceStatistics {
+export class PerformanceStatistics {
private static readonly instances: Map<string, PerformanceStatistics> = new Map<
string,
PerformanceStatistics
this.statistics.statisticsData.get(entryName).avgTimeMeasurement =
this.statistics.statisticsData.get(entryName).totalTimeMeasurement /
this.statistics.statisticsData.get(entryName).countTimeMeasurement;
- Array.isArray(this.statistics.statisticsData.get(entryName)?.timeMeasurementSeries) === true
+ this.statistics.statisticsData.get(entryName)?.timeMeasurementSeries instanceof CircularArray
? this.statistics.statisticsData
.get(entryName)
?.timeMeasurementSeries?.push({ timestamp: entry.startTime, value: entry.duration })
: (this.statistics.statisticsData.get(entryName).timeMeasurementSeries =
- new CircularArray<TimeSeries>(DEFAULT_CIRCULAR_ARRAY_SIZE, {
+ new CircularArray<TimeSeries>(Constants.DEFAULT_CIRCULAR_BUFFER_CAPACITY, {
timestamp: entry.startTime,
value: entry.duration,
}));
return timeSeries.map((timeSeriesItem) => timeSeriesItem.value);
}
- private logPrefix(): string {
+ private logPrefix = (): string => {
return Utils.logPrefix(` ${this.objName} | Performance statistics`);
- }
+ };
}