[syslog-ng] [PATCH (3.4) 2/2] tfjson: Update to the 3.4 API.
Gergely Nagy
algernon at balabit.hu
Sun Jun 5 16:37:29 CEST 2011
The non-simple template functions had an API change, this patch brings
tfjson up to date with those:
Since the state is now kept by core, TFJsonState was introduced, to
hold our additional state. Furthermore tf_json_prepare() was updated
to use the supplied state, instead of trying to keep our own.
A new function, tf_json_free_state() was also introduced, to free the
additional state that tf_json_prepare() allocated.
And as a final step, tf_json_eval() was removed, and tf_json_call()
was updated to use the state kept by the core.
Signed-off-by: Gergely Nagy <algernon at balabit.hu>
---
modules/tfjson/tfjson.c | 42 +++++++++++++++++++++++-------------------
1 files changed, 23 insertions(+), 19 deletions(-)
diff --git a/modules/tfjson/tfjson.c b/modules/tfjson/tfjson.c
index 39a6cdb..59c9f54 100644
--- a/modules/tfjson/tfjson.c
+++ b/modules/tfjson/tfjson.c
@@ -35,21 +35,23 @@
#include <json-glib/json-glib.h>
#endif
+typedef struct _TFJsonState
+{
+ TFSimpleFuncState super;
+ ValuePairs *vp;
+} TFJsonState;
+
static gboolean
-tf_json_prepare(LogTemplateFunction *self, LogTemplate *parent,
+tf_json_prepare(LogTemplateFunction *self, gpointer s, LogTemplate *parent,
gint argc, gchar *argv[],
- gpointer *state, GDestroyNotify *state_destroy,
GError **error)
{
- ValuePairs *vp;
+ TFJsonState *state = (TFJsonState *)s;
- vp = value_pairs_new_from_cmdline (parent->cfg, argc, argv, error);
- if (!vp)
+ state->vp = value_pairs_new_from_cmdline (parent->cfg, argc, argv, error);
+ if (!state->vp)
return FALSE;
- *state = vp;
- *state_destroy = (GDestroyNotify) value_pairs_free;
-
return TRUE;
}
@@ -119,26 +121,28 @@ tf_json_append(GString *result, ValuePairs *vp, LogMessage *msg)
#endif
static void
-tf_json_call(LogTemplateFunction *self, gpointer state, GPtrArray *arg_bufs,
- LogMessage **messages, gint num_messages, LogTemplateOptions *opts,
- gint tz, gint seq_num, const gchar *context_id, GString *result)
+tf_json_call(LogTemplateFunction *self, gpointer s,
+ const LogTemplateInvokeArgs *args, GString *result)
{
+ TFJsonState *state = (TFJsonState *)s;
gint i;
- ValuePairs *vp = (ValuePairs *)state;
- for (i = 0; i < num_messages; i++)
- tf_json_append(result, vp, messages[i]);
+ for (i = 0; i < args->num_messages; i++)
+ tf_json_append(result, state->vp, args->messages[i]);
}
static void
-tf_json_eval (LogTemplateFunction *self, gpointer state, GPtrArray *arg_bufs,
- LogMessage **messages, gint num_messages, LogTemplateOptions *opts,
- gint tz, gint seq_num, const gchar *context_id)
+tf_json_free_state(gpointer s)
{
- return;
+ TFJsonState *state = (TFJsonState *)s;
+
+ if (state->vp)
+ value_pairs_free(state->vp);
+ tf_simple_func_free_state(&state->super);
}
-TEMPLATE_FUNCTION(tf_json, tf_json_prepare, tf_json_eval, tf_json_call, NULL);
+TEMPLATE_FUNCTION(TFJsonState, tf_json, tf_json_prepare, NULL, tf_json_call,
+ tf_json_free_state, NULL);
static Plugin builtin_tmpl_func_plugins[] =
{
--
1.7.2.5
More information about the syslog-ng
mailing list