#pragma once #include #include #include #include #include "src/Helpers/DateTime.hpp" namespace Bloom::Events { static_assert(std::atomic::is_always_lock_free); class Event { private: static inline std::atomic lastEventId = 0; public: int id = ++(Event::lastEventId); QDateTime createdTimestamp = DateTime::currentDateTime(); std::optional correlationId; static inline const std::string name = "GenericEvent"; [[nodiscard]] virtual std::string getName() const { return Event::name; } }; }