import type { AutomaticTransactionGeneratorConfiguration } from '../types/AutomaticTransactionGenerator';
import type ChargingStationConfiguration from '../types/ChargingStationConfiguration';
import type ChargingStationInfo from '../types/ChargingStationInfo';
-import type ChargingStationOcppConfiguration from '../types/ChargingStationOcppConfiguration';
+import type { ChargingStationOcppConfiguration } from '../types/ChargingStationOcppConfiguration';
import ChargingStationTemplate, {
CurrentType,
PowerUnits,
} else {
this.automaticTransactionGenerator.start();
}
+ parentPort.postMessage(MessageChannelUtils.buildUpdatedMessage(this));
}
public stopAutomaticTransactionGenerator(connectorIds?: number[]): void {
if (!Utils.isEmptyArray(connectorIds)) {
for (const connectorId of connectorIds) {
this.automaticTransactionGenerator?.stopConnector(connectorId);
- // FIXME: check if the number of connectors match the CS number of connectors
}
} else {
this.automaticTransactionGenerator?.stop();
- this.automaticTransactionGenerator = null;
}
+ parentPort.postMessage(MessageChannelUtils.buildUpdatedMessage(this));
}
public async stopTransactionOnConnector(
// Respond
cachedRequest = this.requests.get(messageId);
if (Array.isArray(cachedRequest) === true) {
- [responseCallback, , requestCommandName, requestPayload] = cachedRequest;
+ [responseCallback, errorCallback, requestCommandName, requestPayload] = cachedRequest;
} else {
throw new OCPPError(
ErrorType.PROTOCOL_ERROR,
[MessageType.CALL_RESULT_MESSAGE, MessageType.CALL_ERROR_MESSAGE].includes(messageType) ===
true
) {
- // Remove the request from the cache
+ // Always remove the request from the cache in case of error at response handling
this.requests.delete(messageId);
+ // Always reject the deferred promise in case of error at response handling (rejecting an already fulfilled promise is a no-op)
+ if (errorCallback) {
+ errorCallback(error as OCPPError, false);
+ }
}
}
}