From 8214b27e0b9178549116c8c5449271f1fe099a88 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Sun, 10 Apr 2022 11:09:51 +0100 Subject: [Rework] Re-implement cache sorting --- src/libserver/symcache/symcache_internal.hxx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/libserver/symcache/symcache_internal.hxx') diff --git a/src/libserver/symcache/symcache_internal.hxx b/src/libserver/symcache/symcache_internal.hxx index a2b852c19..7dd664e5c 100644 --- a/src/libserver/symcache/symcache_internal.hxx +++ b/src/libserver/symcache/symcache_internal.hxx @@ -78,13 +78,16 @@ using cache_item_ptr = std::shared_ptr; using cache_item_weak_ptr = std::weak_ptr; struct order_generation { - std::vector d; + std::vector d; unsigned int generation_id; + + explicit order_generation(std::size_t nelts, unsigned id) : generation_id(id) { + d.reserve(nelts); + } }; using order_generation_ptr = std::shared_ptr; - class symcache; struct item_condition { @@ -269,6 +272,9 @@ private: /* Internal methods */ auto load_items() -> bool; auto save_items() const -> bool; + auto resort() -> void; + /* Helper for g_hash_table_foreach */ + static auto metric_connect_cb(void *k, void *v, void *ud) -> void; public: explicit symcache(struct rspamd_config *cfg) : cfg(cfg) { -- cgit v1.2.3