X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcharging-station%2FIdTagsCache.ts;h=c0f4d2b9b1e655c80b8280eb60e92b29ffa17688;hb=d972af76b6d7d1d2a099d254eacf45245b5316ac;hp=e5ee13c351e82665f26327d66526824bb0c16e36;hpb=6082281f1beebdf0126417b694c134ea4753442c;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/IdTagsCache.ts b/src/charging-station/IdTagsCache.ts index e5ee13c3..c0f4d2b9 100644 --- a/src/charging-station/IdTagsCache.ts +++ b/src/charging-station/IdTagsCache.ts @@ -1,13 +1,13 @@ -import fs from 'node:fs'; +import { type FSWatcher, readFileSync } from 'node:fs'; import type { ChargingStation } from './ChargingStation'; import { ChargingStationUtils } from './ChargingStationUtils'; import { FileType, IdTagDistribution } from '../types'; -import { ErrorUtils, FileUtils, Utils, logger } from '../utils'; +import { Utils, handleFileException, logger, watchJsonFile } from '../utils'; type IdTagsCacheValueType = { idTags: string[]; - idTagsFileWatcher: fs.FSWatcher | undefined; + idTagsFileWatcher: FSWatcher | undefined; }; export class IdTagsCache { @@ -28,12 +28,12 @@ export class IdTagsCache { } /** - * Get one idtag from the cache given the distribution + * Gets one idtag from the cache given the distribution * Must be called after checking the cache is not an empty array * - * @param distribution - * @param chargingStation - * @param connectorId + * @param distribution - + * @param chargingStation - + * @param connectorId - * @returns */ public getIdTag( @@ -56,10 +56,10 @@ export class IdTagsCache { } /** - * Get all idtags from the cache + * Gets all idtags from the cache * Must be called after checking the cache is not an empty array * - * @param file + * @param file - * @returns */ public getIdTags(file: string): string[] | undefined { @@ -70,7 +70,7 @@ export class IdTagsCache { } public deleteIdTags(file: string): boolean { - return this.deleteIdTagsCache(file); + return this.deleteIdTagsCache(file) && this.deleteIdTagsCacheIndexes(file); } private getRandomIdTag(hashId: string, file: string): string { @@ -116,7 +116,7 @@ export class IdTagsCache { private setIdTagsCache(file: string, idTags: string[]) { return this.idTagsCaches.set(file, { idTags, - idTagsFileWatcher: FileUtils.watchJsonFile( + idTagsFileWatcher: watchJsonFile( file, FileType.Authorization, this.logPrefix(file), @@ -130,7 +130,7 @@ export class IdTagsCache { this.deleteIdTagsCache(file); this.deleteIdTagsCacheIndexes(file); } catch (error) { - ErrorUtils.handleFileException( + handleFileException( file, FileType.Authorization, error as NodeJS.ErrnoException, @@ -155,12 +155,14 @@ export class IdTagsCache { return this.idTagsCaches.delete(file); } - private deleteIdTagsCacheIndexes(file: string): void { + private deleteIdTagsCacheIndexes(file: string): boolean { + let deleted: boolean[]; for (const [key] of this.idTagsCachesAddressableIndexes) { if (key.startsWith(file)) { - this.idTagsCachesAddressableIndexes.delete(key); + deleted.push(this.idTagsCachesAddressableIndexes.delete(key)); } } + return !deleted.some((value) => value === false); } private getIdTagsCacheIndexesAddressableKey(prefix: string, uid: string): string { @@ -170,9 +172,9 @@ export class IdTagsCache { private getIdTagsFromFile(file: string): string[] { if (Utils.isNotEmptyString(file)) { try { - return JSON.parse(fs.readFileSync(file, 'utf8')) as string[]; + return JSON.parse(readFileSync(file, 'utf8')) as string[]; } catch (error) { - ErrorUtils.handleFileException( + handleFileException( file, FileType.Authorization, error as NodeJS.ErrnoException, @@ -180,7 +182,6 @@ export class IdTagsCache { ); } } - logger.info(`${this.logPrefix(file)} No id tags file given in configuration`); return []; }