]> source.dussan.org Git - rspamd.git/commitdiff
Implement statistics for mmaped statfiles.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Sun, 1 Feb 2015 22:08:20 +0000 (22:08 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Sun, 1 Feb 2015 22:08:20 +0000 (22:08 +0000)
src/libstat/backends/backends.h
src/libstat/backends/mmaped_file.c
src/libstat/stat_config.c

index a3042e8a455fc44882c95f69da8b3dc00ad287de..c7c4210fbc80d45ac77f8b56d16c66726654998b 100644 (file)
@@ -26,7 +26,7 @@
 #define BACKENDS_H_
 
 #include "config.h"
-
+#include "ucl.h"
 
 #define RSPAMD_DEFAULT_BACKEND "mmap"
 
@@ -49,6 +49,7 @@ struct rspamd_stat_backend {
                        struct rspamd_token_result *res, gpointer ctx);
        gulong (*total_learns)(struct rspamd_statfile_runtime *runtime, gpointer ctx);
        gulong (*inc_learns)(struct rspamd_statfile_runtime *runtime, gpointer ctx);
+       ucl_object_t* (*get_stat)(struct rspamd_statfile_runtime *runtime, gpointer ctx);
        gpointer ctx;
 };
 
@@ -65,5 +66,7 @@ gulong rspamd_mmaped_file_total_learns (struct rspamd_statfile_runtime *runtime,
                gpointer ctx);
 gulong rspamd_mmaped_file_inc_learns (struct rspamd_statfile_runtime *runtime,
                gpointer ctx);
+ucl_object_t * rspamd_mmaped_file_get_stat (struct rspamd_statfile_runtime *runtime,
+               gpointer ctx);
 
 #endif /* BACKENDS_H_ */
index e85db248bdf8bf9f52230be731b7b48e3c663c96..aa99b09022bb65e6d500fe906e423b8dc2778b04 100644 (file)
@@ -972,3 +972,34 @@ rspamd_mmaped_file_inc_learns (struct rspamd_statfile_runtime *runtime,
 
        return rev;
 }
+
+ucl_object_t *
+rspamd_mmaped_file_get_stat (struct rspamd_statfile_runtime *runtime,
+               gpointer ctx)
+{
+       ucl_object_t *res = NULL;
+       rspamd_mmaped_file_t *mf = (rspamd_mmaped_file_t *)runtime;
+
+       if (mf != NULL) {
+               res = ucl_object_typed_new (UCL_OBJECT);
+
+               ucl_object_insert_key (res, ucl_object_fromint (
+                               rspamd_mmaped_file_get_revision (mf, NULL, NULL)), "revision",
+                               0, false);
+               ucl_object_insert_key (res, ucl_object_fromint (mf->len), "size",
+                               0, false);
+               ucl_object_insert_key (res, ucl_object_fromint (
+                               rspamd_mmaped_file_get_total (mf)), "total",  0, false);
+               ucl_object_insert_key (res, ucl_object_fromint (
+                               rspamd_mmaped_file_get_used (mf)), "used", 0, false);
+               ucl_object_insert_key (res, ucl_object_fromstring (mf->cf->symbol),
+                               "symbol", 0, false);
+
+               if (mf->cf->label) {
+                       ucl_object_insert_key (res, ucl_object_fromstring (mf->cf->label),
+                                       "label", 0, false);
+               }
+       }
+
+       return res;
+}
index 7d24be267c933c1da1bccb2aea8cb4fbda5e969b..53eff3ecb426b6486126245e3521ae23c1bb9b2e 100644 (file)
@@ -52,7 +52,8 @@ struct rspamd_stat_backend stat_backends[] = {
                .process_token = rspamd_mmaped_file_process_token,
                .learn_token = rspamd_mmaped_file_learn_token,
                .total_learns = rspamd_mmaped_file_total_learns,
-               .inc_learns = rspamd_mmaped_file_inc_learns
+               .inc_learns = rspamd_mmaped_file_inc_learns,
+               .get_stat = rspamd_mmaped_file_get_stat
        }
 };