solanaceae_message3/solanaceae/message3/message_time_sort.cpp

30 lines
818 B
C++
Raw Normal View History

2023-07-22 23:31:56 +02:00
#include "./message_time_sort.hpp"
2023-07-22 23:34:42 +02:00
#include "./components.hpp"
2023-07-22 23:31:56 +02:00
MessageTimeSort::MessageTimeSort(RegistryMessageModel& rmm) : _rmm(rmm) {
_rmm.subscribe(this, RegistryMessageModel_Event::message_construct);
_rmm.subscribe(this, RegistryMessageModel_Event::message_updated);
}
void MessageTimeSort::iterate(void) {
// TODO: maybe only every x for updated
for (auto* reg : _to_sort) {
reg->sort<Message::Components::Timestamp>([](const auto& lhs, const auto& rhs) -> bool {
return lhs.ts > rhs.ts;
2023-07-22 23:31:56 +02:00
}, entt::insertion_sort{});
}
_to_sort.clear();
}
bool MessageTimeSort::onEvent(const Message::Events::MessageConstruct& e) {
_to_sort.emplace(e.e.registry());
return false;
}
bool MessageTimeSort::onEvent(const Message::Events::MessageUpdated& e) {
_to_sort.emplace(e.e.registry());
return false;
}