diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-08-03 15:00:01 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-08-03 15:00:01 +0100 |
commit | a829e43304c479e6eceecdf5d5d7322a2b5dc65c (patch) | |
tree | a69b0011b4e8b5dde5697d28c07c3e0e089200c7 /src/libstat | |
parent | 05ca72e767b9e90b82b21685299017cf39416a7e (diff) | |
download | rspamd-a829e43304c479e6eceecdf5d5d7322a2b5dc65c.tar.gz rspamd-a829e43304c479e6eceecdf5d5d7322a2b5dc65c.zip |
Rework stat get function to allow async behaviour.
Diffstat (limited to 'src/libstat')
-rw-r--r-- | src/libstat/stat_api.h | 6 | ||||
-rw-r--r-- | src/libstat/stat_process.c | 16 |
2 files changed, 15 insertions, 7 deletions
diff --git a/src/libstat/stat_api.h b/src/libstat/stat_api.h index 94734adef..493354007 100644 --- a/src/libstat/stat_api.h +++ b/src/libstat/stat_api.h @@ -80,8 +80,10 @@ rspamd_stat_result_t rspamd_stat_learn (struct rspamd_task *task, * @param total_learns the total number of learns is stored here * @return array of statistical information */ -ucl_object_t * rspamd_stat_statistics (struct rspamd_config *cfg, - guint64 *total_learns); +rspamd_stat_result_t rspamd_stat_statistics (struct rspamd_task *task, + struct rspamd_config *cfg, + guint64 *total_learns, + ucl_object_t **res); void rspamd_stat_unload (void); diff --git a/src/libstat/stat_process.c b/src/libstat/stat_process.c index 93f48b3e9..630d73a95 100644 --- a/src/libstat/stat_process.c +++ b/src/libstat/stat_process.c @@ -768,8 +768,10 @@ rspamd_stat_learn (struct rspamd_task *task, gboolean spam, lua_State *L, return ret; } -ucl_object_t * -rspamd_stat_statistics (struct rspamd_config *cfg, guint64 *total_learns) +rspamd_stat_result_t rspamd_stat_statistics (struct rspamd_task *task, + struct rspamd_config *cfg, + guint64 *total_learns, + ucl_object_t **target) { struct rspamd_classifier_config *clcf; struct rspamd_statfile_config *stcf; @@ -801,9 +803,9 @@ rspamd_stat_statistics (struct rspamd_config *cfg, guint64 *total_learns) continue; } - backend_runtime = bk->runtime (NULL, stcf, FALSE, bk->ctx); + backend_runtime = bk->runtime (task, stcf, FALSE, bk->ctx); - learns += bk->total_learns (NULL, backend_runtime, bk->ctx); + learns += bk->total_learns (task, backend_runtime, bk->ctx); elt = bk->get_stat (backend_runtime, bk->ctx); if (elt != NULL) { @@ -822,5 +824,9 @@ rspamd_stat_statistics (struct rspamd_config *cfg, guint64 *total_learns) } } - return res; + if (*target) { + *target = res; + } + + return RSPAMD_STAT_PROCESS_OK; } |