projects
/
collectd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Initial support of GPSd in collectd.
[collectd.git]
/
src
/
redis.c
diff --git
a/src/redis.c
b/src/redis.c
index
02f3edd
..
7864ead
100644
(file)
--- a/
src/redis.c
+++ b/
src/redis.c
@@
-40,7
+40,7
@@
#define MAX_REDIS_NODE_NAME 64
#define MAX_REDIS_PASSWD_LENGTH 512
#define MAX_REDIS_VAL_SIZE 256
#define MAX_REDIS_NODE_NAME 64
#define MAX_REDIS_PASSWD_LENGTH 512
#define MAX_REDIS_VAL_SIZE 256
-#define MAX_REDIS_
COMMAND
2048
+#define MAX_REDIS_
QUERY
2048
/* Redis plugin configuration example:
*
/* Redis plugin configuration example:
*
@@
-54,14
+54,14
@@
* </Plugin>
*/
* </Plugin>
*/
-struct redis_
command
_s;
-typedef struct redis_
command_s redis_command
_t;
-struct redis_
command
_s
+struct redis_
query
_s;
+typedef struct redis_
query_s redis_query
_t;
+struct redis_
query
_s
{
{
- char
command[MAX_REDIS_COMMAND
];
+ char
query[MAX_REDIS_QUERY
];
char type[DATA_MAX_NAME_LEN];
char instance[DATA_MAX_NAME_LEN];
char type[DATA_MAX_NAME_LEN];
char instance[DATA_MAX_NAME_LEN];
- redis_
command
_t *next;
+ redis_
query
_t *next;
};
struct redis_node_s;
};
struct redis_node_s;
@@
-73,7
+73,7
@@
struct redis_node_s
char passwd[MAX_REDIS_PASSWD_LENGTH];
int port;
struct timeval timeout;
char passwd[MAX_REDIS_PASSWD_LENGTH];
int port;
struct timeval timeout;
- redis_
command_t *command
s;
+ redis_
query_t *querie
s;
redis_node_t *next;
};
redis_node_t *next;
};
@@
-122,46
+122,52
@@
static int redis_node_add (const redis_node_t *rn) /* {{{ */
return (0);
} /* }}} */
return (0);
} /* }}} */
-static redis_
command_t *redis_config_command
(oconfig_item_t *ci) /* {{{ */
+static redis_
query_t *redis_config_query
(oconfig_item_t *ci) /* {{{ */
{
{
- redis_
command_t *rc
;
+ redis_
query_t *rq
;
int status;
int i;
int status;
int i;
- r
c = calloc(1, sizeof(*rc
));
- if (r
c
== NULL) {
- ERROR("redis plugin: calloca failed adding redis_
command
.");
+ r
q = calloc(1, sizeof(*rq
));
+ if (r
q
== NULL) {
+ ERROR("redis plugin: calloca failed adding redis_
query
.");
return NULL;
}
return NULL;
}
- status = cf_util_get_string_buffer(ci, r
c->type, sizeof(rc->type
));
+ status = cf_util_get_string_buffer(ci, r
q->query, sizeof(rq->query
));
if (status != 0)
goto err;
if (status != 0)
goto err;
+ /*
+ * Default to a gauge type.
+ */
+ (void)strncpy(rq->type, "gauge", sizeof(rq->type));
+ (void)strncpy(rq->instance, rq->query, sizeof(rq->instance));
+ replace_special(rq->instance, sizeof(rq->instance));
+
for (i = 0; i < ci->children_num; i++) {
oconfig_item_t *option = ci->children + i;
for (i = 0; i < ci->children_num; i++) {
oconfig_item_t *option = ci->children + i;
- if (strcasecmp("
Exec
", option->key) == 0) {
- status = cf_util_get_string_buffer(option, r
c->command, sizeof(rc->command
));
+ if (strcasecmp("
Type
", option->key) == 0) {
+ status = cf_util_get_string_buffer(option, r
q->type, sizeof(rq->type
));
} else if (strcasecmp("Instance", option->key) == 0) {
} else if (strcasecmp("Instance", option->key) == 0) {
- status = cf_util_get_string_buffer(option, rc->instance, sizeof(rc->instance));
+ status = cf_util_get_string_buffer(option, rq->instance, sizeof(rq->instance));
+ } else {
+ WARNING("redis plugin: unknown configuration option: %s", option->key);
+ status = -1;
}
if (status != 0)
goto err;
}
}
if (status != 0)
goto err;
}
- if (strlen(rc->command) == 0) {
- WARNING("redis plugin: invalid command definition for: %s", rc->type);
- goto err;
- }
- return rc;
+ return rq;
err:
err:
- free(r
c
);
+ free(r
q
);
return NULL;
} /* }}} */
static int redis_config_node (oconfig_item_t *ci) /* {{{ */
{
redis_node_t rn;
return NULL;
} /* }}} */
static int redis_config_node (oconfig_item_t *ci) /* {{{ */
{
redis_node_t rn;
- redis_
command_t *rc
;
+ redis_
query_t *rq
;
int i;
int status;
int timeout;
int i;
int status;
int timeout;
@@
-170,7
+176,7
@@
static int redis_config_node (oconfig_item_t *ci) /* {{{ */
sstrncpy (rn.host, REDIS_DEF_HOST, sizeof (rn.host));
rn.port = REDIS_DEF_PORT;
rn.timeout.tv_usec = REDIS_DEF_TIMEOUT;
sstrncpy (rn.host, REDIS_DEF_HOST, sizeof (rn.host));
rn.port = REDIS_DEF_PORT;
rn.timeout.tv_usec = REDIS_DEF_TIMEOUT;
- rn.
command
s = NULL;
+ rn.
querie
s = NULL;
status = cf_util_get_string_buffer (ci, rn.name, sizeof (rn.name));
if (status != 0)
status = cf_util_get_string_buffer (ci, rn.name, sizeof (rn.name));
if (status != 0)
@@
-191,14
+197,14
@@
static int redis_config_node (oconfig_item_t *ci) /* {{{ */
status = 0;
}
}
status = 0;
}
}
- else if (strcasecmp ("
Command
", option->key) == 0)
+ else if (strcasecmp ("
Query
", option->key) == 0)
{
{
- r
c = redis_config_command
(option);
- if (r
c
== NULL) {
+ r
q = redis_config_query
(option);
+ if (r
q
== NULL) {
status =1;
} else {
status =1;
} else {
- r
c->next = rn.command
s;
- rn.
commands = rc
;
+ r
q->next = rn.querie
s;
+ rn.
queries = rq
;
}
}
else if (strcasecmp ("Timeout", option->key) == 0)
}
}
else if (strcasecmp ("Timeout", option->key) == 0)
@@
-315,25
+321,25
@@
int redis_handle_info (char *node, char const *info_line, char const *type, char
} /* }}} int redis_handle_info */
} /* }}} int redis_handle_info */
-int redis_handle_
command (redisContext *rh, redis_node_t *rn, redis_command_t *rc
) /* {{{ */
+int redis_handle_
query (redisContext *rh, redis_node_t *rn, redis_query_t *rq
) /* {{{ */
{
redisReply *rr;
const data_set_t *ds;
value_t val;
{
redisReply *rr;
const data_set_t *ds;
value_t val;
- ds = plugin_get_ds (r
c
->type);
+ ds = plugin_get_ds (r
q
->type);
if (!ds) {
if (!ds) {
- ERROR ("redis plugin: DataSet `%s' not defined.", r
c
->type);
+ ERROR ("redis plugin: DataSet `%s' not defined.", r
q
->type);
return (-1);
}
if (ds->ds_num != 1) {
return (-1);
}
if (ds->ds_num != 1) {
- ERROR ("redis plugin: DS `%s' has too many types.", r
c
->type);
+ ERROR ("redis plugin: DS `%s' has too many types.", r
q
->type);
return (-1);
}
return (-1);
}
- if ((rr = redisCommand(rh, r
c->command
)) == NULL) {
- WARNING("redis plugin: unable to carry out
command `%s'.", rc->command
);
+ if ((rr = redisCommand(rh, r
q->query
)) == NULL) {
+ WARNING("redis plugin: unable to carry out
query `%s'.", rq->query
);
return (-1);
}
return (-1);
}
@@
-356,7
+362,7
@@
int redis_handle_command (redisContext *rh, redis_node_t *rn, redis_command_t *r
break;
case REDIS_REPLY_STRING:
if (parse_value (rr->str, &val, ds->ds[0].type) == -1) {
break;
case REDIS_REPLY_STRING:
if (parse_value (rr->str, &val, ds->ds[0].type) == -1) {
- WARNING("redis plugin: Unable to parse field `%s'.", r
c
->type);
+ WARNING("redis plugin: Unable to parse field `%s'.", r
q
->type);
freeReplyObject (rr);
return (-1);
}
freeReplyObject (rr);
return (-1);
}
@@
-367,7
+373,7
@@
int redis_handle_command (redisContext *rh, redis_node_t *rn, redis_command_t *r
return (-1);
}
return (-1);
}
- redis_submit(rn->name, r
c->type, (strlen(rc->instance) >0)?rc
->instance:NULL, val);
+ redis_submit(rn->name, r
q->type, (strlen(rq->instance) >0)?rq
->instance:NULL, val);
freeReplyObject (rr);
return 0;
} /* }}} int redis_handle_info */
freeReplyObject (rr);
return 0;
} /* }}} int redis_handle_info */
@@
-375,7
+381,7
@@
int redis_handle_command (redisContext *rh, redis_node_t *rn, redis_command_t *r
static int redis_read (void) /* {{{ */
{
redis_node_t *rn;
static int redis_read (void) /* {{{ */
{
redis_node_t *rn;
- redis_
command_t *rc
;
+ redis_
query_t *rq
;
for (rn = nodes_head; rn != NULL; rn = rn->next)
{
for (rn = nodes_head; rn != NULL; rn = rn->next)
{
@@
-430,8
+436,8
@@
static int redis_read (void) /* {{{ */
freeReplyObject (rr);
freeReplyObject (rr);
- for (r
c = rn->commands; rc != NULL; rc = rc
->next)
- redis_handle_
command(rh, rn, rc
);
+ for (r
q = rn->queries; rq != NULL; rq = rq
->next)
+ redis_handle_
query(rh, rn, rq
);
redisFree (rh);
}
redisFree (rh);
}