4#ifndef OCPP_OCSP_UPDATER_HPP
5#define OCPP_OCSP_UPDATER_HPP
8#include <condition_variable>
13#include <ocpp/common/call_types.hpp>
14#include <ocpp/common/evse_security.hpp>
15#include <ocpp/v2/messages/GetCertificateStatus.hpp>
21 [[nodiscard]]
const char* what()
const noexcept override {
22 return this->reason.c_str();
26 reason(std::move(reason)), _allows_retry(can_be_retried) {
29 [[nodiscard]]
bool allows_retry()
const {
35 const bool _allows_retry;
48 virtual void start() = 0;
49 virtual void stop() = 0;
52 virtual void trigger_ocsp_cache_update() = 0;
58 OcspUpdater(std::shared_ptr<EvseSecurity> evse_security, cert_status_func get_cert_status_from_csms,
59 std::chrono::seconds ocsp_cache_update_interval = std::chrono::hours(167),
60 std::chrono::seconds ocsp_cache_update_retry_interval = std::chrono::hours(24));
64 void start()
override;
67 void trigger_ocsp_cache_update()
override;
71 std::thread updater_thread;
76 std::mutex update_ocsp_cache_lock;
78 std::condition_variable explicit_update_trigger;
80 std::chrono::time_point<std::chrono::steady_clock> update_deadline;
81 std::shared_ptr<EvseSecurity> evse_security;
87 cert_status_func get_cert_status_from_csms;
90 const std::chrono::seconds ocsp_cache_update_interval;
91 const std::chrono::seconds ocsp_cache_update_retry_interval;
94 void updater_thread_loop();
96 void execute_ocsp_update();
Class implements OCPP2.0.1 Charging Station.
Definition: charge_point.hpp:334
Definition: ocsp_updater.hpp:19
Definition: ocsp_updater.hpp:44
Definition: ocsp_updater.hpp:55
Definition: charge_point.hpp:54
Contains a OCPP GetCertificateStatus message.
Definition: GetCertificateStatus.hpp:19
Contains a OCPP GetCertificateStatusResponse message.
Definition: GetCertificateStatus.hpp:39