#include "RecordingObserver.hpp" namespace matador::test { RecordingObserver::RecordingObserver(utils::message_bus& bus) { subscriptions.push_back(bus.subscribe([this](const sql::statement_accessed_event &ev) { std::lock_guard lock(mutex); events.push(utils::message::from_ref(ev)); })); subscriptions.push_back(bus.subscribe([this](const sql::statement_added_event &ev) { std::lock_guard lock(mutex); events.push(utils::message::from_ref(ev)); })); subscriptions.push_back(bus.subscribe([this](const sql::statement_evicted_event &ev) { std::lock_guard lock(mutex); events.push(utils::message::from_ref(ev)); })); } std::optional RecordingObserver::poll() { std::lock_guard lock(mutex); if (events.empty()) { return std::nullopt; } auto evt = events.front(); events.pop(); return evt; } }