diff --git a/src/chargepoint/status/StatusManager.cpp b/src/chargepoint/status/StatusManager.cpp index 75b69818..9a3b71ea 100644 --- a/src/chargepoint/status/StatusManager.cpp +++ b/src/chargepoint/status/StatusManager.cpp @@ -144,24 +144,22 @@ bool StatusManager::updateConnectorStatus(unsigned int conn Connector* connector = m_connectors.getConnector(connector_id); if (connector) { + std::lock_guard lock(connector->mutex); + // Check if status has changed if (connector->status != status) { - { - std::lock_guard lock(connector->mutex); - - // Save new status - connector->status = status; - connector->status_timestamp = DateTime::now(); - connector->error_code = error_code; - connector->info = info; - connector->vendor_id = vendor_id; - connector->vendor_error = vendor_error; - m_connectors.saveConnector(connector->id); - } - LOG_INFO << "Connector " << connector_id << " : " << ChargePointStatusHelper.toString(status); + // Save new status + connector->status = status; + connector->status_timestamp = DateTime::now(); + connector->error_code = error_code; + connector->info = info; + connector->vendor_id = vendor_id; + connector->vendor_error = vendor_error; + m_connectors.saveConnector(connector->id); + // Check registration status if (m_registration_status == RegistrationStatus::Accepted) { @@ -170,7 +168,7 @@ bool StatusManager::updateConnectorStatus(unsigned int conn if (duration == std::chrono::seconds(0)) { // Notify now - statusNotificationProcess(connector_id); + m_worker_pool.run(std::bind(&StatusManager::statusNotificationProcess, this, connector_id)); } else {