123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- /*-
- * Copyright 2016 Vsevolod Stakhov
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- #ifndef BACKENDS_H_
- #define BACKENDS_H_
-
- #include "config.h"
- #include "ucl.h"
-
- #define RSPAMD_DEFAULT_BACKEND "mmap"
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- /* Forwarded declarations */
- struct rspamd_classifier_config;
- struct rspamd_statfile_config;
- struct rspamd_config;
- struct rspamd_stat_ctx;
- struct rspamd_token_result;
- struct rspamd_statfile;
- struct rspamd_task;
-
- struct rspamd_stat_backend {
- const char *name;
- bool read_only;
-
- gpointer (*init)(struct rspamd_stat_ctx *ctx, struct rspamd_config *cfg,
- struct rspamd_statfile *st);
-
- gpointer (*runtime)(struct rspamd_task *task,
- struct rspamd_statfile_config *stcf,
- gboolean learn, gpointer ctx,
- int id);
-
- gboolean (*process_tokens)(struct rspamd_task *task, GPtrArray *tokens,
- int id,
- gpointer ctx);
-
- gboolean (*finalize_process)(struct rspamd_task *task,
- gpointer runtime, gpointer ctx);
-
- gboolean (*learn_tokens)(struct rspamd_task *task, GPtrArray *tokens,
- int id,
- gpointer ctx);
-
- gulong (*total_learns)(struct rspamd_task *task,
- gpointer runtime, gpointer ctx);
-
- gboolean (*finalize_learn)(struct rspamd_task *task,
- gpointer runtime, gpointer ctx, GError **err);
-
- gulong (*inc_learns)(struct rspamd_task *task,
- gpointer runtime, gpointer ctx);
-
- gulong (*dec_learns)(struct rspamd_task *task,
- gpointer runtime, gpointer ctx);
-
- ucl_object_t *(*get_stat)(gpointer runtime, gpointer ctx);
-
- void (*close)(gpointer ctx);
-
- gpointer (*load_tokenizer_config)(gpointer runtime, gsize *sz);
-
- gpointer ctx;
- };
-
- #define RSPAMD_STAT_BACKEND_DEF(name) \
- gpointer rspamd_##name##_init(struct rspamd_stat_ctx *ctx, \
- struct rspamd_config *cfg, struct rspamd_statfile *st); \
- gpointer rspamd_##name##_runtime(struct rspamd_task *task, \
- struct rspamd_statfile_config *stcf, \
- gboolean learn, gpointer ctx, int id); \
- gboolean rspamd_##name##_process_tokens(struct rspamd_task *task, \
- GPtrArray *tokens, int id, \
- gpointer runtime); \
- gboolean rspamd_##name##_finalize_process(struct rspamd_task *task, \
- gpointer runtime, \
- gpointer ctx); \
- gboolean rspamd_##name##_learn_tokens(struct rspamd_task *task, \
- GPtrArray *tokens, int id, \
- gpointer runtime); \
- gboolean rspamd_##name##_finalize_learn(struct rspamd_task *task, \
- gpointer runtime, \
- gpointer ctx, GError **err); \
- gulong rspamd_##name##_total_learns(struct rspamd_task *task, \
- gpointer runtime, \
- gpointer ctx); \
- gulong rspamd_##name##_inc_learns(struct rspamd_task *task, \
- gpointer runtime, \
- gpointer ctx); \
- gulong rspamd_##name##_dec_learns(struct rspamd_task *task, \
- gpointer runtime, \
- gpointer ctx); \
- gulong rspamd_##name##_learns(struct rspamd_task *task, \
- gpointer runtime, \
- gpointer ctx); \
- ucl_object_t *rspamd_##name##_get_stat(gpointer runtime, \
- gpointer ctx); \
- gpointer rspamd_##name##_load_tokenizer_config(gpointer runtime, \
- gsize *len); \
- void rspamd_##name##_close(gpointer ctx)
-
- RSPAMD_STAT_BACKEND_DEF(mmaped_file);
- RSPAMD_STAT_BACKEND_DEF(sqlite3);
- RSPAMD_STAT_BACKEND_DEF(cdb);
- RSPAMD_STAT_BACKEND_DEF(redis);
- RSPAMD_STAT_BACKEND_DEF(http);
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif /* BACKENDS_H_ */
|