summaryrefslogtreecommitdiffstats
path: root/runtime/ruleset.c
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2012-09-20 16:11:22 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2012-09-20 16:11:22 +0200
commit7351fcc0e2635bf29c556b189190507c8c5202c9 (patch)
treea76d4dcfcb78cea364e98218a68149d2eb6d0d1b /runtime/ruleset.c
parentf5e7e35dca91df2d9ed00c7b542716c60bd7161a (diff)
downloadrsyslog-7351fcc0e2635bf29c556b189190507c8c5202c9.tar.gz
rsyslog-7351fcc0e2635bf29c556b189190507c8c5202c9.tar.xz
rsyslog-7351fcc0e2635bf29c556b189190507c8c5202c9.zip
Add skeleton for RainerScript optimizer
actual optimization is not yet done
Diffstat (limited to 'runtime/ruleset.c')
-rw-r--r--runtime/ruleset.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/runtime/ruleset.c b/runtime/ruleset.c
index bcccb79d..ea8849e2 100644
--- a/runtime/ruleset.c
+++ b/runtime/ruleset.c
@@ -756,6 +756,40 @@ debugPrintAll(rsconf_t *conf)
RETiRet;
}
+static inline void
+rulesetOptimize(ruleset_t *pRuleset)
+{
+ if(Debug) {
+ dbgprintf("ruleset '%s' before optimization:\n",
+ pRuleset->pszName);
+ rulesetDebugPrint((ruleset_t*) pRuleset);
+ }
+ cnfstmtOptimize(pRuleset->root);
+ if(Debug) {
+ dbgprintf("ruleset '%s' after optimization:\n",
+ pRuleset->pszName);
+ rulesetDebugPrint((ruleset_t*) pRuleset);
+ }
+}
+
+/* helper for rulsetOptimizeAll(), optimizes a single ruleset */
+DEFFUNC_llExecFunc(doRulesetOptimizeAll)
+{
+ rulesetOptimize((ruleset_t*) pData);
+ return RS_RET_OK;
+}
+/* optimize all rulesets
+ */
+rsRetVal
+rulesetOptimizeAll(rsconf_t *conf)
+{
+ DEFiRet;
+ dbgprintf("begin ruleset optimization phase\n");
+ llExecFunc(&(conf->rulesets.llRulesets), doRulesetOptimizeAll, NULL);
+ dbgprintf("ruleset optimization phase finished.\n");
+ RETiRet;
+}
+
/* Create a ruleset-specific "main" queue for this ruleset. If one is already
* defined, an error message is emitted but nothing else is done.