summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@rspamd.com>2022-08-13 20:16:36 +0100
committerVsevolod Stakhov <vsevolod@rspamd.com>2022-08-13 20:16:36 +0100
commitc256285b71ca1ce9fed556992d301026f8c40a6f (patch)
tree30b972aac031605a1ea1ea2bae50e1005e2feb0f
parent1e7d04a8a1e9f7b3d246f01a131a3edc8fa81682 (diff)
downloadrspamd-c256285b71ca1ce9fed556992d301026f8c40a6f.tar.gz
rspamd-c256285b71ca1ce9fed556992d301026f8c40a6f.zip
[Project] Allow to extract augmentation values
-rw-r--r--src/libserver/symcache/symcache_item.cxx15
-rw-r--r--src/libserver/symcache/symcache_item.hxx14
2 files changed, 29 insertions, 0 deletions
diff --git a/src/libserver/symcache/symcache_item.cxx b/src/libserver/symcache/symcache_item.cxx
index c41d3d68c..57a0a6695 100644
--- a/src/libserver/symcache/symcache_item.cxx
+++ b/src/libserver/symcache/symcache_item.cxx
@@ -500,6 +500,21 @@ cache_item::get_augmentation_weight() const -> int
});
}
+auto cache_item::get_numeric_augmentation(std::string_view name) const -> std::optional<double>
+{
+ const auto augmentation_value_maybe = rspamd::find_map(this->augmentations, name);
+
+ if (augmentation_value_maybe.has_value()) {
+ const auto &augmentation = augmentation_value_maybe.value().get();
+
+ if (std::holds_alternative<double>(augmentation.value)) {
+ return std::get<double>(augmentation.value);
+ }
+ }
+
+ return std::nullopt;
+}
+
auto virtual_item::get_parent(const symcache &cache) const -> const cache_item *
{
diff --git a/src/libserver/symcache/symcache_item.hxx b/src/libserver/symcache/symcache_item.hxx
index 31706058b..67c0960f3 100644
--- a/src/libserver/symcache/symcache_item.hxx
+++ b/src/libserver/symcache/symcache_item.hxx
@@ -418,6 +418,20 @@ public:
auto get_augmentation_weight() const -> int;
/**
+ * Returns numeric augmentation value
+ * @param name
+ * @return
+ */
+ auto get_numeric_augmentation(std::string_view name) const -> std::optional<double>;
+
+ /**
+ * Returns string augmentation value
+ * @param name
+ * @return
+ */
+ auto get_string_augmentation(std::string_view name) const -> std::optional<std::string_view>;
+
+ /**
* Add a virtual symbol as a child of some normal symbol
* @param ptr
*/