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