/*
- * collectd - src/utils_logtail.c
+ * collectd - src/utils_tail_match.c
* Copyright (C) 2007-2008 C-Ware, Inc.
* Copyright (C) 2008 Florian Forster
*
#include "plugin.h"
#include "utils_match.h"
#include "utils_tail.h"
-#include "utils_logtail.h"
+#include "utils_tail_match.h"
-struct cu_logtail_simple_s
+struct cu_tail_match_simple_s
{
char plugin[DATA_MAX_NAME_LEN];
char plugin_instance[DATA_MAX_NAME_LEN];
char type[DATA_MAX_NAME_LEN];
char type_instance[DATA_MAX_NAME_LEN];
};
-typedef struct cu_logtail_simple_s cu_logtail_simple_t;
+typedef struct cu_tail_match_simple_s cu_tail_match_simple_t;
-struct cu_logtail_match_s
+struct cu_tail_match_match_s
{
cu_match_t *match;
void *user_data;
int (*submit) (cu_match_t *match, void *user_data);
void (*free) (void *user_data);
};
-typedef struct cu_logtail_match_s cu_logtail_match_t;
+typedef struct cu_tail_match_match_s cu_tail_match_match_t;
-struct cu_logtail_s
+struct cu_tail_match_s
{
int flags;
cu_tail_t *tail;
- cu_logtail_match_t *matches;
+ cu_tail_match_match_t *matches;
size_t matches_num;
};
*/
static int simple_submit_match (cu_match_t *match, void *user_data)
{
- cu_logtail_simple_t *data = (cu_logtail_simple_t *) user_data;
+ cu_tail_match_simple_t *data = (cu_tail_match_simple_t *) user_data;
cu_match_value_t *match_value;
value_list_t vl = VALUE_LIST_INIT;
value_t values[1];
static int tail_callback (void *data, char *buf, int buflen)
{
- cu_logtail_t *obj = (cu_logtail_t *) data;
+ cu_tail_match_t *obj = (cu_tail_match_t *) data;
int i;
for (i = 0; i < obj->matches_num; i++)
/*
* Public functions
*/
-cu_logtail_t *logtail_create (const char *filename)
+cu_tail_match_t *tail_match_create (const char *filename)
{
- cu_logtail_t *obj;
+ cu_tail_match_t *obj;
- obj = (cu_logtail_t *) malloc (sizeof (cu_logtail_t));
+ obj = (cu_tail_match_t *) malloc (sizeof (cu_tail_match_t));
if (obj == NULL)
return (NULL);
- memset (obj, '\0', sizeof (cu_logtail_t));
+ memset (obj, '\0', sizeof (cu_tail_match_t));
obj->tail = cu_tail_create (filename);
if (obj->tail == NULL)
}
return (obj);
-} /* cu_logtail_t *logtail_create */
+} /* cu_tail_match_t *tail_match_create */
-void logtail_destroy (cu_logtail_t *obj)
+void tail_match_destroy (cu_tail_match_t *obj)
{
int i;
for (i = 0; i < obj->matches_num; i++)
{
- cu_logtail_match_t *match = obj->matches + i;
+ cu_tail_match_match_t *match = obj->matches + i;
if (match->match != NULL)
{
match_destroy (match->match);
sfree (obj->matches);
sfree (obj);
-} /* void logtail_destroy */
+} /* void tail_match_destroy */
-int logtail_add_match (cu_logtail_t *obj, cu_match_t *match,
+int tail_match_add_match (cu_tail_match_t *obj, cu_match_t *match,
int (*submit_match) (cu_match_t *match, void *user_data),
void *user_data,
void (*free_user_data) (void *user_data))
{
- cu_logtail_match_t *temp;
+ cu_tail_match_match_t *temp;
- temp = (cu_logtail_match_t *) realloc (obj->matches,
- sizeof (cu_logtail_match_t) * (obj->matches_num + 1));
+ temp = (cu_tail_match_match_t *) realloc (obj->matches,
+ sizeof (cu_tail_match_match_t) * (obj->matches_num + 1));
if (temp == NULL)
return (-1);
temp->free = free_user_data;
return (0);
-} /* int logtail_add_match */
+} /* int tail_match_add_match */
-int logtail_add_match_simple (cu_logtail_t *obj,
+int tail_match_add_match_simple (cu_tail_match_t *obj,
const char *regex, int ds_type,
const char *plugin, const char *plugin_instance,
const char *type, const char *type_instance)
{
cu_match_t *match;
- cu_logtail_simple_t *user_data;
+ cu_tail_match_simple_t *user_data;
int status;
match = match_create_simple (regex, ds_type);
if (match == NULL)
return (-1);
- user_data = (cu_logtail_simple_t *) malloc (sizeof (cu_logtail_simple_t));
+ user_data = (cu_tail_match_simple_t *) malloc (sizeof (cu_tail_match_simple_t));
if (user_data == NULL)
{
match_destroy (match);
return (-1);
}
- memset (user_data, '\0', sizeof (cu_logtail_simple_t));
+ memset (user_data, '\0', sizeof (cu_tail_match_simple_t));
sstrncpy (user_data->plugin, plugin, sizeof (user_data->plugin));
if (plugin_instance != NULL)
sstrncpy (user_data->type_instance, type_instance,
sizeof (user_data->type_instance));
- status = logtail_add_match (obj, match, simple_submit_match,
+ status = tail_match_add_match (obj, match, simple_submit_match,
user_data, free);
if (status != 0)
}
return (status);
-} /* int logtail_add_match_simple */
+} /* int tail_match_add_match_simple */
-int logtail_read (cu_logtail_t *obj)
+int tail_match_read (cu_tail_match_t *obj)
{
char buffer[4096];
int status;
(void *) obj);
if (status != 0)
{
- ERROR ("logtail: cu_tail_read failed.");
+ ERROR ("tail_match: cu_tail_read failed.");
return (status);
}
for (i = 0; i < obj->matches_num; i++)
{
- cu_logtail_match_t *lt_match = obj->matches + i;
+ cu_tail_match_match_t *lt_match = obj->matches + i;
if (lt_match->submit == NULL)
continue;
}
return (0);
-} /* int logtail_read */
+} /* int tail_match_read */
/* vim: set sw=2 sts=2 ts=8 : */
/*
- * collectd - src/utils_logtail.h
+ * collectd - src/utils_tail_match.h
* Copyright (C) 2007-2008 C-Ware, Inc.
* Copyright (C) 2008 Florian Forster
*
* Florian Forster <octo at verplant.org>
*
* Description:
- * `logtail' uses `utils_tail' and `utils_match' to tail a file and try to
+ * `tail_match' uses `utils_tail' and `utils_match' to tail a file and try to
* match it using several regular expressions. Matches are then passed to
* user-provided callback functions or default handlers. This should keep all
* of the parsing logic out of the actual plugin, which only operate with
#include "utils_match.h"
-struct cu_logtail_s;
-typedef struct cu_logtail_s cu_logtail_t;
+struct cu_tail_match_s;
+typedef struct cu_tail_match_s cu_tail_match_t;
/*
* NAME
- * logtail_create
+ * tail_match_create
*
* DESCRIPTION
- * Allocates, initializes and returns a new `cu_logtail_t' object.
+ * Allocates, initializes and returns a new `cu_tail_match_t' object.
*
* PARAMETERS
* `filename' The name to read data from.
* RETURN VALUE
* Returns NULL upon failure, non-NULL otherwise.
*/
-cu_logtail_t *logtail_create (const char *filename);
+cu_tail_match_t *tail_match_create (const char *filename);
/*
* NAME
- * logtail_destroy
+ * tail_match_destroy
*
* DESCRIPTION
- * Releases resources used by the `cu_logtail_t' object.
+ * Releases resources used by the `cu_tail_match_t' object.
*
* PARAMETERS
* The object to destroy.
*/
-void logtail_destroy (cu_logtail_t *obj);
+void tail_match_destroy (cu_tail_match_t *obj);
/*
* NAME
- * logtail_add_match
+ * tail_match_add_match
*
* DESCRIPTION
* Adds a match, in form of a `cu_match_t' object, to the object.
* supplied data.
* Please note that his function is called regardless whether this match
* matched any lines recently or not.
- * When `logtail_destroy' is called the `user_data' pointer is freed using
+ * When `tail_match_destroy' is called the `user_data' pointer is freed using
* the `free_user_data' callback - if it is not NULL.
- * When using this interface the `logtail' module doesn't dispatch any values
+ * When using this interface the `tail_match' module doesn't dispatch any values
* itself - all that has to happen in either the match-callbacks or the
* submit_match callback.
*
* RETURN VALUE
* Zero upon success, non-zero otherwise.
*/
-int logtail_add_match (cu_logtail_t *obj, cu_match_t *match,
+int tail_match_add_match (cu_tail_match_t *obj, cu_match_t *match,
int (*submit_match) (cu_match_t *match, void *user_data),
void *user_data,
void (*free_user_data) (void *user_data));
/*
* NAME
- * logtail_add_match_simple
+ * tail_match_add_match_simple
*
* DESCRIPTION
- * A simplified version of `logtail_add_match'. The regular expressen `regex'
+ * A simplified version of `tail_match_add_match'. The regular expressen `regex'
* must match a number, which is then dispatched according to `ds_type'. See
* the `match_create_simple' function in utils_match.h for a description how
* this flag effects calculation of a new value.
- * The values gathered are dispatched by the logtail module in this case. The
+ * The values gathered are dispatched by the tail_match module in this case. The
* passed `plugin', `plugin_instance', `type', and `type_instance' are
* directly used when submitting these values.
*
* RETURN VALUE
* Zero upon success, non-zero otherwise.
*/
-int logtail_add_match_simple (cu_logtail_t *obj,
+int tail_match_add_match_simple (cu_tail_match_t *obj,
const char *regex, int ds_type,
const char *plugin, const char *plugin_instance,
const char *type, const char *type_instance);
/*
* NAME
- * logtail_read
+ * tail_match_read
*
* DESCRIPTION
* This function should be called periodically by plugins. It reads new lines
* from the logfile using `utils_tail' and tries to match them using all
* added `utils_match' objects.
* After all lines have been read and processed, the submit_match callback is
- * called or, in case of logtail_add_match_simple, the data is dispatched to
+ * called or, in case of tail_match_add_match_simple, the data is dispatched to
* the daemon directly.
*
* RETURN VALUE
* Zero on success, nonzero on failure.
*/
-int logtail_read (cu_logtail_t *obj);
+int tail_match_read (cu_tail_match_t *obj);
/* vim: set sw=2 sts=2 ts=8 : */