From 4357c47ebe11552844d2479a74f15f1927f4d038 Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Tue, 31 Oct 2023 00:47:12 +0100 Subject: A few more small speedups --- src/Cache.cpp | 66 +++++------------------------------------------------------ 1 file changed, 5 insertions(+), 61 deletions(-) (limited to 'src/Cache.cpp') diff --git a/src/Cache.cpp b/src/Cache.cpp index d7cd113b..5367ee22 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp @@ -197,14 +197,7 @@ compactDatabase(lmdb::env &from, lmdb::env &to) toTxn.commit(); } -template -bool -containsStateUpdates(const T &e) -{ - return std::visit([](const auto &ev) { return Cache::isStateEvent_; }, e); -} - -bool +static bool containsStateUpdates(const mtx::events::collections::StrippedEvents &e) { using namespace mtx::events; @@ -1996,54 +1989,6 @@ Cache::updateState(const std::string &room, const mtx::responses::StateEvents &s txn.commit(); } -namespace { -template -auto -isMessage(const mtx::events::RoomEvent &e) - -> std::enable_if_t::value, bool> -{ - return true; -} - -template -auto -isMessage(const mtx::events::Event &) -{ - return false; -} - -template -auto -isMessage(const mtx::events::EncryptedEvent &) -{ - return true; -} - -auto -isMessage(const mtx::events::RoomEvent &) -{ - return true; -} - -auto -isMessage(const mtx::events::RoomEvent &) -{ - return true; -} - -auto -isMessage(const mtx::events::RoomEvent &) -{ - return true; -} - -// auto -// isMessage(const mtx::events::RoomEvent &) -// { -// return true; -// } -} - template std::optional> Cache::getStateEvent(lmdb::txn &txn, const std::string &room_id, std::string_view state_key) @@ -2418,10 +2363,9 @@ Cache::saveState(const mtx::responses::Sync &res) } for (const auto &e : room.second.timeline.events) { - if (!std::visit([](const auto &e) -> bool { return isMessage(e); }, e)) + if (!mtx::accessors::is_message(e)) continue; - updatedInfo.approximate_last_modification_ts = - std::visit([](const auto &e) -> uint64_t { return e.origin_server_ts; }, e); + updatedInfo.approximate_last_modification_ts = mtx::accessors::origin_server_ts_ms(e); } if (auto newRoomInfoDump = nlohmann::json(updatedInfo).dump(); @@ -2592,14 +2536,14 @@ Cache::roomsWithStateUpdates(const mtx::responses::Sync &res) for (const auto &room : res.rooms.join) { bool hasUpdates = false; for (const auto &s : room.second.state.events) { - if (containsStateUpdates(s)) { + if (mtx::accessors::is_state_event(s)) { hasUpdates = true; break; } } for (const auto &s : room.second.timeline.events) { - if (containsStateUpdates(s)) { + if (mtx::accessors::is_state_event(s)) { hasUpdates = true; break; } -- cgit 1.5.1