LIST_INSERT_HEAD (&metric_res->results, result, next);
}
+/*
+ * Default consolidation function based on factors in config file
+ */
+int
+factor_consolidation_func (struct worker_task *task, const char *metric_name)
+{
+ struct metric_result *metric_res;
+ struct filter_result *result;
+ double *factor;
+ int res = 0;
+
+ metric_res = g_hash_table_lookup (task->results, metric_name);
+ if (metric_res == NULL) {
+ return res;
+ }
+
+ LIST_FOREACH (result, &metric_res->results, next) {
+ if (result->flag) {
+ factor = g_hash_table_lookup (task->worker->srv->cfg->factors, result->symbol);
+ if (factor == NULL) {
+ /* Default multiplier is 1 */
+ res ++;
+ }
+ else {
+ res += *factor;
+ }
+ }
+ }
+
+ return res;
+}
+
int
process_filters (struct worker_task *task)
{
struct worker_task;
-typedef void (*metric_cons_func)(struct worker_task *task, const char *metric_name);
+typedef int (*metric_cons_func)(struct worker_task *task, const char *metric_name);
typedef void (*filter_func)(struct worker_task *task);
enum filter_type { C_FILTER, PERL_FILTER };
int process_filters (struct worker_task *task);
void insert_result (struct worker_task *task, const char *metric_name, const char *symbol, u_char flag);
+int factor_consolidation_func (struct worker_task *task, const char *metric_name);
#endif