Explorar el Código

Support re_cache statistics

tags/1.1.0
Vsevolod Stakhov hace 8 años
padre
commit
0c08e9013e
Se han modificado 2 ficheros con 34 adiciones y 0 borrados
  1. 21
    0
      src/libserver/re_cache.c
  2. 13
    0
      src/libserver/re_cache.h

+ 21
- 0
src/libserver/re_cache.c Ver fichero

guchar *checked; guchar *checked;
guchar *results; guchar *results;
struct rspamd_re_cache *cache; struct rspamd_re_cache *cache;
struct rspamd_re_cache_stat stat;
}; };


static GQuark static GQuark
return rt; return rt;
} }


const struct rspamd_re_cache_stat *
rspamd_re_cache_get_stat (struct rspamd_re_runtime *rt)
{
g_assert (rt != NULL);

return &rt->stat;
}

static guint static guint
rspamd_re_cache_process_pcre (struct rspamd_re_runtime *rt, rspamd_re_cache_process_pcre (struct rspamd_re_runtime *rt,
rspamd_regexp_t *re, const guchar *in, gsize len, rspamd_regexp_t *re, const guchar *in, gsize len,
} }
} }


rt->stat.regexp_checked ++;
rt->stat.bytes_scanned_pcre += len;
rt->stat.bytes_scanned += len;

if (r > 0) {
rt->stat.regexp_matched ++;
}

return r; return r;
} }


to - from, to - from,
FALSE); FALSE);
} }
else {
rt->stat.regexp_matched++;
}


setbit (rt->checked, id); setbit (rt->checked, id);


cbdata.in = in; cbdata.in = in;
cbdata.re = re; cbdata.re = re;
cbdata.rt = rt; cbdata.rt = rt;
rt->stat.bytes_scanned += len;


if ((hs_scan (re_class->hs_db, in, len, 0, re_class->hs_scratch, if ((hs_scan (re_class->hs_db, in, len, 0, re_class->hs_scratch,
rspamd_re_cache_hyperscan_cb, &cbdata)) != HS_SUCCESS) { rspamd_re_cache_hyperscan_cb, &cbdata)) != HS_SUCCESS) {

+ 13
- 0
src/libserver/re_cache.h Ver fichero

RSPAMD_RE_MAX RSPAMD_RE_MAX
}; };


struct rspamd_re_cache_stat {
guint64 bytes_scanned;
guint64 bytes_scanned_pcre;
guint regexp_checked;
guint regexp_matched;
};

/** /**
* Initialize re_cache persistent structure * Initialize re_cache persistent structure
*/ */
*/ */
struct rspamd_re_runtime* rspamd_re_cache_runtime_new (struct rspamd_re_cache *cache); struct rspamd_re_runtime* rspamd_re_cache_runtime_new (struct rspamd_re_cache *cache);


/**
* Get runtime statistics
*/
const struct rspamd_re_cache_stat *
rspamd_re_cache_get_stat (struct rspamd_re_runtime *rt);

/** /**
* Process regexp runtime and return the result for a specific regexp * Process regexp runtime and return the result for a specific regexp
* @param task task object * @param task task object

Cargando…
Cancelar
Guardar