this.starting = false;
}
- public stop(): void {
+ public async stop(): Promise<void> {
if (this.started === false) {
logger.warn(`${this.logPrefix()} is already stopped`);
return;
return;
}
this.stopping = true;
- this.stopConnectors();
+ await this.stopConnectors();
this.started = false;
this.stopping = false;
}
}
}
- public stopConnector(connectorId: number): void {
+ public async stopConnector(connectorId: number): Promise<void> {
if (this.connectorsStatus.has(connectorId) === false) {
logger.error(`${this.logPrefix(connectorId)} stopping on non existing connector`);
throw new BaseError(`Connector ${connectorId} does not exist`);
}
if (this.connectorsStatus.get(connectorId)?.start === true) {
this.connectorsStatus.get(connectorId)!.start = false;
+ await this.stopTransaction(connectorId);
} else if (this.connectorsStatus.get(connectorId)?.start === false) {
logger.warn(`${this.logPrefix(connectorId)} is already stopped on connector`);
}
}
}
- private stopConnectors(): void {
+ private async stopConnectors(): Promise<void> {
if (this.chargingStation.hasEvses) {
for (const [evseId, evseStatus] of this.chargingStation.evses) {
if (evseId > 0) {
for (const connectorId of evseStatus.connectors.keys()) {
- this.stopConnector(connectorId);
+ await this.stopConnector(connectorId);
}
}
}
} else {
for (const connectorId of this.chargingStation.connectors.keys()) {
if (connectorId > 0) {
- this.stopConnector(connectorId);
+ await this.stopConnector(connectorId);
}
}
}
);
while (this.connectorsStatus.get(connectorId)?.start === true) {
if (!this.canStartConnector(connectorId)) {
- this.stopConnector(connectorId);
+ await this.stopConnector(connectorId);
break;
}
if (!this.chargingStation?.ocppRequestService) {
?.transactionId} and will stop in ${formatDurationMilliSeconds(waitTrxEnd)}`,
);
await sleep(waitTrxEnd);
- // Stop transaction
- logger.info(
- `${this.logPrefix(
- connectorId,
- )} stop transaction with id ${this.chargingStation.getConnectorStatus(connectorId)
- ?.transactionId}`,
- );
await this.stopTransaction(connectorId);
}
} else {
const beginId = PerformanceStatistics.beginMeasure(measureId);
let stopResponse: StopTransactionResponse | undefined;
if (this.chargingStation.getConnectorStatus(connectorId)?.transactionStarted === true) {
+ logger.info(
+ `${this.logPrefix(
+ connectorId,
+ )} stop transaction with id ${this.chargingStation.getConnectorStatus(connectorId)
+ ?.transactionId}`,
+ );
stopResponse = await this.chargingStation.stopTransactionOnConnector(connectorId, reason);
++this.connectorsStatus.get(connectorId)!.stopTransactionRequests!;
if (stopResponse?.idTagInfo?.status === AuthorizationStatus.ACCEPTED) {
this.initialize();
this.idTagsCache.deleteIdTags(getIdTagsFile(this.stationInfo)!);
// Restart the ATG
- this.stopAutomaticTransactionGenerator();
+ this.stopAutomaticTransactionGenerator().catch(() => {});
delete this.automaticTransactionGeneratorConfiguration;
if (this.getAutomaticTransactionGeneratorConfiguration()?.enable === true) {
this.startAutomaticTransactionGenerator();
parentPort?.postMessage(buildUpdatedMessage(this));
}
- public stopAutomaticTransactionGenerator(connectorIds?: number[]): void {
+ public async stopAutomaticTransactionGenerator(connectorIds?: number[]): Promise<void> {
if (isNotEmptyArray(connectorIds)) {
for (const connectorId of connectorIds!) {
- this.automaticTransactionGenerator?.stopConnector(connectorId);
+ await this.automaticTransactionGenerator?.stopConnector(connectorId);
}
} else {
- this.automaticTransactionGenerator?.stop();
+ await this.automaticTransactionGenerator?.stop();
}
this.saveAutomaticTransactionGeneratorConfiguration();
parentPort?.postMessage(buildUpdatedMessage(this));
this.stopHeartbeat();
// Stop ongoing transactions
if (this.automaticTransactionGenerator?.started === true) {
- this.stopAutomaticTransactionGenerator();
+ await this.stopAutomaticTransactionGenerator();
} else {
await this.stopRunningTransactions(reason);
}
this.stopHeartbeat();
// Stop the ATG if needed
if (this.getAutomaticTransactionGeneratorConfiguration().stopOnConnectionFailure === true) {
- this.stopAutomaticTransactionGenerator();
+ await this.stopAutomaticTransactionGenerator();
}
if (
this.autoReconnectRetryCount < this.getAutoReconnectMaxRetries()! ||