+ private getRandomIdTag(hashId: string, file: string): string {
+ const tags = this.getAuthorizedTags(file);
+ this.tagsCachesAddressableIndexes.set(
+ file + hashId,
+ Math.floor(Utils.secureRandom() * tags.length)
+ );
+ return tags[this.tagsCachesAddressableIndexes.get(file + hashId)];
+ }
+
+ private getRoundRobinIdTag(hashId: string, file: string): string {
+ const tags = this.getAuthorizedTags(file);
+ const idTagIndex = this.tagsCachesAddressableIndexes.get(file + hashId) ?? 0;
+ const idTag = tags[idTagIndex];
+ this.tagsCachesAddressableIndexes.set(
+ file + hashId,
+ idTagIndex === tags.length - 1 ? 0 : idTagIndex + 1
+ );
+ return idTag;
+ }
+
+ private getConnectorAffinityIdTag(chargingStation: ChargingStation, connectorId: number): string {
+ const file = ChargingStationUtils.getAuthorizationFile(chargingStation.stationInfo);
+ const tags = this.getAuthorizedTags(file);
+ const hashId = chargingStation.stationInfo.hashId;
+ this.tagsCachesAddressableIndexes.set(
+ file + hashId,
+ (chargingStation.index - 1 + (connectorId - 1)) % tags.length
+ );
+ return tags[this.tagsCachesAddressableIndexes.get(file + hashId)];
+ }
+