本文整理汇总了C++中cf_util_get_string函数的典型用法代码示例。如果您正苦于以下问题:C++ cf_util_get_string函数的具体用法?C++ cf_util_get_string怎么用?C++ cf_util_get_string使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cf_util_get_string函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: statsd_config
static int statsd_config (oconfig_item_t *ci) /* {{{ */
{
for (int i = 0; i < ci->children_num; i++)
{
oconfig_item_t *child = ci->children + i;
if (strcasecmp ("Host", child->key) == 0)
cf_util_get_string (child, &conf_node);
else if (strcasecmp ("Port", child->key) == 0)
cf_util_get_service (child, &conf_service);
else if (strcasecmp ("DeleteCounters", child->key) == 0)
cf_util_get_boolean (child, &conf_delete_counters);
else if (strcasecmp ("DeleteTimers", child->key) == 0)
cf_util_get_boolean (child, &conf_delete_timers);
else if (strcasecmp ("DeleteGauges", child->key) == 0)
cf_util_get_boolean (child, &conf_delete_gauges);
else if (strcasecmp ("DeleteSets", child->key) == 0)
cf_util_get_boolean (child, &conf_delete_sets);
else if (strcasecmp ("CounterSum", child->key) == 0)
cf_util_get_boolean (child, &conf_counter_sum);
else if (strcasecmp ("TimerLower", child->key) == 0)
cf_util_get_boolean (child, &conf_timer_lower);
else if (strcasecmp ("TimerUpper", child->key) == 0)
cf_util_get_boolean (child, &conf_timer_upper);
else if (strcasecmp ("TimerSum", child->key) == 0)
cf_util_get_boolean (child, &conf_timer_sum);
else if (strcasecmp ("TimerCount", child->key) == 0)
cf_util_get_boolean (child, &conf_timer_count);
else if (strcasecmp ("TimerPercentile", child->key) == 0)
statsd_config_timer_percentile (child);
else
ERROR ("statsd plugin: The \"%s\" config option is not valid.",
child->key);
}
return (0);
} /* }}} int statsd_config */
开发者ID:maniacs-ops,项目名称:collectd,代码行数:37,代码来源:statsd.c
示例2: apcups_config
static int apcups_config (oconfig_item_t *ci)
{
int i;
_Bool persistent_conn_set = 0;
for (i = 0; i < ci->children_num; i++)
{
oconfig_item_t *child = ci->children + i;
if (strcasecmp (child->key, "Host") == 0)
cf_util_get_string (child, &conf_node);
else if (strcasecmp (child->key, "Port") == 0)
cf_util_get_service (child, &conf_service);
else if (strcasecmp (child->key, "ReportSeconds") == 0)
cf_util_get_boolean (child, &conf_report_seconds);
else if (strcasecmp (child->key, "PersistentConnection") == 0) {
cf_util_get_boolean (child, &conf_persistent_conn);
persistent_conn_set = 1;
}
else
ERROR ("apcups plugin: Unknown config option \"%s\".", child->key);
}
if (!persistent_conn_set) {
double interval = CDTIME_T_TO_DOUBLE(plugin_get_interval());
if (interval > APCUPS_SERVER_TIMEOUT) {
NOTICE ("apcups plugin: Plugin poll interval set to %.3f seconds. "
"Apcupsd NIS socket timeout is %.3f seconds, "
"PersistentConnection disabled by default.",
interval, APCUPS_SERVER_TIMEOUT);
conf_persistent_conn = 0;
}
}
return (0);
} /* int apcups_config */
开发者ID:strizhechenko,项目名称:collectd,代码行数:36,代码来源:apcups.c
示例3: cdbi_config_add_database
static int cdbi_config_add_database (oconfig_item_t *ci) /* {{{ */
{
cdbi_database_t *db;
int status;
int i;
if ((ci->values_num != 1)
|| (ci->values[0].type != OCONFIG_TYPE_STRING))
{
WARNING ("dbi plugin: The `Database' block "
"needs exactly one string argument.");
return (-1);
}
db = calloc (1, sizeof (*db));
if (db == NULL)
{
ERROR ("dbi plugin: calloc failed.");
return (-1);
}
status = cf_util_get_string (ci, &db->name);
if (status != 0)
{
sfree (db);
return (status);
}
/* Fill the `cdbi_database_t' structure.. */
for (i = 0; i < ci->children_num; i++)
{
oconfig_item_t *child = ci->children + i;
if (strcasecmp ("Driver", child->key) == 0)
status = cf_util_get_string (child, &db->driver);
else if (strcasecmp ("DriverOption", child->key) == 0)
status = cdbi_config_add_database_driver_option (db, child);
else if (strcasecmp ("SelectDB", child->key) == 0)
status = cf_util_get_string (child, &db->select_db);
else if (strcasecmp ("Query", child->key) == 0)
status = udb_query_pick_from_list (child, queries, queries_num,
&db->queries, &db->queries_num);
else if (strcasecmp ("Host", child->key) == 0)
status = cf_util_get_string (child, &db->host);
else if (strcasecmp ("Interval", child->key) == 0)
status = cf_util_get_cdtime(child, &db->interval);
else
{
WARNING ("dbi plugin: Option `%s' not allowed here.", child->key);
status = -1;
}
if (status != 0)
break;
}
/* Check that all necessary options have been given. */
while (status == 0)
{
if (db->driver == NULL)
{
WARNING ("dbi plugin: `Driver' not given for database `%s'", db->name);
status = -1;
}
if (db->driver_options_num == 0)
{
WARNING ("dbi plugin: No `DriverOption' given for database `%s'. "
"This will likely not work.", db->name);
}
break;
} /* while (status == 0) */
while ((status == 0) && (db->queries_num > 0))
{
size_t j;
db->q_prep_areas = calloc (db->queries_num, sizeof (*db->q_prep_areas));
if (db->q_prep_areas == NULL)
{
WARNING ("dbi plugin: calloc failed");
status = -1;
break;
}
for (j = 0; j < db->queries_num; ++j)
{
db->q_prep_areas[j]
= udb_query_allocate_preparation_area (db->queries[j]);
if (db->q_prep_areas[j] == NULL)
{
WARNING ("dbi plugin: udb_query_allocate_preparation_area failed");
status = -1;
break;
}
}
break;
}
//.........这里部分代码省略.........
开发者ID:4thAce,项目名称:collectd,代码行数:101,代码来源:dbi.c
示例4: csnmp_config_add_data
static int csnmp_config_add_data (oconfig_item_t *ci)
{
data_definition_t *dd;
int status = 0;
int i;
dd = (data_definition_t *) malloc (sizeof (data_definition_t));
if (dd == NULL)
return (-1);
memset (dd, '\0', sizeof (data_definition_t));
status = cf_util_get_string(ci, &dd->name);
if (status != 0)
{
free (dd);
return (-1);
}
dd->scale = 1.0;
dd->shift = 0.0;
for (i = 0; i < ci->children_num; i++)
{
oconfig_item_t *option = ci->children + i;
if (strcasecmp ("Type", option->key) == 0)
status = cf_util_get_string(option, &dd->type);
else if (strcasecmp ("Table", option->key) == 0)
status = cf_util_get_boolean(option, &dd->is_table);
else if (strcasecmp ("Instance", option->key) == 0)
status = csnmp_config_add_data_instance (dd, option);
else if (strcasecmp ("InstancePrefix", option->key) == 0)
status = csnmp_config_add_data_instance_prefix (dd, option);
else if (strcasecmp ("Values", option->key) == 0)
status = csnmp_config_add_data_values (dd, option);
else if (strcasecmp ("Shift", option->key) == 0)
status = cf_util_get_double(option, &dd->shift);
else if (strcasecmp ("Scale", option->key) == 0)
status = cf_util_get_double(option, &dd->scale);
else if (strcasecmp ("Ignore", option->key) == 0)
status = csnmp_config_add_data_blacklist(dd, option);
else if (strcasecmp ("InvertMatch", option->key) == 0)
status = csnmp_config_add_data_blacklist_match_inverted(dd, option);
else
{
WARNING ("snmp plugin: Option `%s' not allowed here.", option->key);
status = -1;
}
if (status != 0)
break;
} /* for (ci->children) */
while (status == 0)
{
if (dd->type == NULL)
{
WARNING ("snmp plugin: `Type' not given for data `%s'", dd->name);
status = -1;
break;
}
if (dd->values == NULL)
{
WARNING ("snmp plugin: No `Value' given for data `%s'", dd->name);
status = -1;
break;
}
break;
} /* while (status == 0) */
if (status != 0)
{
sfree (dd->name);
sfree (dd->instance_prefix);
sfree (dd->values);
sfree (dd->ignores);
sfree (dd);
return (-1);
}
DEBUG ("snmp plugin: dd = { name = %s, type = %s, is_table = %s, values_len = %zu }",
dd->name, dd->type, (dd->is_table != 0) ? "true" : "false", dd->values_len);
if (data_head == NULL)
data_head = dd;
else
{
data_definition_t *last;
last = data_head;
while (last->next != NULL)
last = last->next;
last->next = dd;
}
return (0);
} /* int csnmp_config_add_data */
开发者ID:kmiku7,项目名称:collectd,代码行数:97,代码来源:snmp.c
示例5: kafka_config_topic
static void kafka_config_topic(rd_kafka_conf_t *conf, oconfig_item_t *ci) /* {{{ */
{
int status;
int i;
struct kafka_topic_context *tctx;
char *key;
char *val;
char callback_name[DATA_MAX_NAME_LEN];
char errbuf[1024];
user_data_t ud;
oconfig_item_t *child;
rd_kafka_conf_res_t ret;
if ((tctx = calloc(1, sizeof (*tctx))) == NULL) {
ERROR ("write_kafka plugin: calloc failed.");
return;
}
tctx->escape_char = '.';
tctx->store_rates = 1;
rd_kafka_conf_set_log_cb(conf, kafka_log);
if ((tctx->kafka = rd_kafka_new(RD_KAFKA_PRODUCER, conf,
errbuf, sizeof(errbuf))) == NULL) {
sfree(tctx);
ERROR("write_kafka plugin: cannot create kafka handle.");
return;
}
conf = NULL;
if ((tctx->conf = rd_kafka_topic_conf_new()) == NULL) {
rd_kafka_destroy(tctx->kafka);
sfree(tctx);
ERROR ("write_kafka plugin: cannot create topic configuration.");
return;
}
if (ci->values_num != 1) {
WARNING("kafka topic name needed.");
goto errout;
}
if (ci->values[0].type != OCONFIG_TYPE_STRING) {
WARNING("kafka topic needs a string argument.");
goto errout;
}
if ((tctx->topic_name = strdup(ci->values[0].value.string)) == NULL) {
ERROR("write_kafka plugin: cannot copy topic name.");
goto errout;
}
for (i = 0; i < ci->children_num; i++) {
/*
* The code here could be simplified but makes room
* for easy adding of new options later on.
*/
child = &ci->children[i];
status = 0;
if (strcasecmp ("Property", child->key) == 0) {
if (child->values_num != 2) {
WARNING("kafka properties need both a key and a value.");
goto errout;
}
if (child->values[0].type != OCONFIG_TYPE_STRING ||
child->values[1].type != OCONFIG_TYPE_STRING) {
WARNING("kafka properties needs string arguments.");
goto errout;
}
key = child->values[0].value.string;
val = child->values[0].value.string;
ret = rd_kafka_topic_conf_set(tctx->conf,key, val,
errbuf, sizeof(errbuf));
if (ret != RD_KAFKA_CONF_OK) {
WARNING("cannot set kafka topic property %s to %s: %s.",
key, val, errbuf);
goto errout;
}
} else if (strcasecmp ("Key", child->key) == 0) {
char *tmp_buf = NULL;
status = cf_util_get_string(child, &tmp_buf);
if (status != 0) {
WARNING("write_kafka plugin: invalid key supplied");
break;
}
if (strcasecmp(tmp_buf, "Random") != 0) {
tctx->has_key = 1;
tctx->key = crc32_buffer((u_char *)tmp_buf, strlen(tmp_buf));
}
sfree(tmp_buf);
} else if (strcasecmp ("Format", child->key) == 0) {
status = cf_util_get_string(child, &key);
if (status != 0)
goto errout;
assert(key != NULL);
//.........这里部分代码省略.........
开发者ID:adanin,项目名称:collectd,代码行数:101,代码来源:write_kafka.c
示例6: rc_config
static int rc_config (oconfig_item_t *ci)
{
int i;
for (i = 0; i < ci->children_num; i++)
{
oconfig_item_t const *child = ci->children + i;
const char *key = child->key;
int status = 0;
if (strcasecmp ("DataDir", key) == 0)
{
status = cf_util_get_string (child, &datadir);
if (status == 0)
{
int len = strlen (datadir);
while ((len > 0) && (datadir[len - 1] == '/'))
{
len--;
datadir[len] = 0;
}
if (len <= 0)
sfree (datadir);
}
}
else if (strcasecmp ("DaemonAddress", key) == 0)
status = cf_util_get_string (child, &daemon_address);
else if (strcasecmp ("CreateFiles", key) == 0)
status = cf_util_get_boolean (child, &config_create_files);
else if (strcasecmp ("CreateFilesAsync", key) == 0)
status = cf_util_get_boolean (child, &rrdcreate_config.async);
else if (strcasecmp ("CollectStatistics", key) == 0)
status = cf_util_get_boolean (child, &config_collect_stats);
else if (strcasecmp ("StepSize", key) == 0)
{
int tmp = -1;
status = rc_config_get_int_positive (child, &tmp);
if (status == 0)
rrdcreate_config.stepsize = (unsigned long) tmp;
}
else if (strcasecmp ("HeartBeat", key) == 0)
status = rc_config_get_int_positive (child, &rrdcreate_config.heartbeat);
else if (strcasecmp ("RRARows", key) == 0)
status = rc_config_get_int_positive (child, &rrdcreate_config.rrarows);
else if (strcasecmp ("RRATimespan", key) == 0)
{
int tmp = -1;
status = rc_config_get_int_positive (child, &tmp);
if (status == 0)
status = rc_config_add_timespan (tmp);
}
else if (strcasecmp ("XFF", key) == 0)
status = rc_config_get_xff (child, &rrdcreate_config.xff);
else
{
WARNING ("rrdcached plugin: Ignoring invalid option %s.", key);
continue;
}
if (status != 0)
WARNING ("rrdcached plugin: Handling the \"%s\" option failed.", key);
}
if (daemon_address != NULL)
{
plugin_register_write ("rrdcached", rc_write, /* user_data = */ NULL);
plugin_register_flush ("rrdcached", rc_flush, /* user_data = */ NULL);
}
return (0);
} /* int rc_config */
开发者ID:01BTC10,项目名称:collectd,代码行数:73,代码来源:rrdcached.c
示例7: cc_config_add_page
static int cc_config_add_page (oconfig_item_t *ci) /* {{{ */
{
web_page_t *page;
int status;
int i;
if ((ci->values_num != 1) || (ci->values[0].type != OCONFIG_TYPE_STRING))
{
WARNING ("curl plugin: `Page' blocks need exactly one string argument.");
return (-1);
}
page = calloc (1, sizeof (*page));
if (page == NULL)
{
ERROR ("curl plugin: calloc failed.");
return (-1);
}
page->url = NULL;
page->user = NULL;
page->pass = NULL;
page->digest = 0;
page->verify_peer = 1;
page->verify_host = 1;
page->response_time = 0;
page->response_code = 0;
page->timeout = -1;
page->instance = strdup (ci->values[0].value.string);
if (page->instance == NULL)
{
ERROR ("curl plugin: strdup failed.");
sfree (page);
return (-1);
}
/* Process all children */
status = 0;
for (i = 0; i < ci->children_num; i++)
{
oconfig_item_t *child = ci->children + i;
if (strcasecmp ("URL", child->key) == 0)
status = cf_util_get_string (child, &page->url);
else if (strcasecmp ("User", child->key) == 0)
status = cf_util_get_string (child, &page->user);
else if (strcasecmp ("Password", child->key) == 0)
status = cf_util_get_string (child, &page->pass);
else if (strcasecmp ("Digest", child->key) == 0)
status = cf_util_get_boolean (child, &page->digest);
else if (strcasecmp ("VerifyPeer", child->key) == 0)
status = cf_util_get_boolean (child, &page->verify_peer);
else if (strcasecmp ("VerifyHost", child->key) == 0)
status = cf_util_get_boolean (child, &page->verify_host);
else if (strcasecmp ("MeasureResponseTime", child->key) == 0)
status = cf_util_get_boolean (child, &page->response_time);
else if (strcasecmp ("MeasureResponseCode", child->key) == 0)
status = cf_util_get_boolean (child, &page->response_code);
else if (strcasecmp ("CACert", child->key) == 0)
status = cf_util_get_string (child, &page->cacert);
else if (strcasecmp ("Match", child->key) == 0)
/* Be liberal with failing matches => don't set `status'. */
cc_config_add_match (page, child);
else if (strcasecmp ("Header", child->key) == 0)
status = cc_config_append_string ("Header", &page->headers, child);
else if (strcasecmp ("Post", child->key) == 0)
status = cf_util_get_string (child, &page->post_body);
else if (strcasecmp ("Timeout", child->key) == 0)
status = cf_util_get_int (child, &page->timeout);
else
{
WARNING ("curl plugin: Option `%s' not allowed here.", child->key);
status = -1;
}
if (status != 0)
break;
} /* for (i = 0; i < ci->children_num; i++) */
/* Additionial sanity checks and libCURL initialization. */
while (status == 0)
{
if (page->url == NULL)
{
WARNING ("curl plugin: `URL' missing in `Page' block.");
status = -1;
}
if (page->matches == NULL && !page->response_time && !page->response_code)
{
assert (page->instance != NULL);
WARNING ("curl plugin: No (valid) `Match' block "
"or MeasureResponseTime or MeasureResponseCode within "
"`Page' block `%s'.", page->instance);
status = -1;
}
if (status == 0)
status = cc_page_init_curl (page);
//.........这里部分代码省略.........
开发者ID:NymbleTechnology,项目名称:collectd,代码行数:101,代码来源:curl.c
示例8: cj_config_add_key
static int cj_config_add_key (cj_t *db, /* {{{ */
oconfig_item_t *ci)
{
cj_key_t *key;
int status;
int i;
if ((ci->values_num != 1)
|| (ci->values[0].type != OCONFIG_TYPE_STRING))
{
WARNING ("curl_json plugin: The `Key' block "
"needs exactly one string argument.");
return (-1);
}
key = (cj_key_t *) malloc (sizeof (*key));
if (key == NULL)
{
ERROR ("curl_json plugin: malloc failed.");
return (-1);
}
memset (key, 0, sizeof (*key));
key->magic = CJ_KEY_MAGIC;
if (strcasecmp ("Key", ci->key) == 0)
{
status = cf_util_get_string (ci, &key->path);
if (status != 0)
{
sfree (key);
return (status);
}
}
else
{
ERROR ("curl_json plugin: cj_config: "
"Invalid key: %s", ci->key);
return (-1);
}
status = 0;
for (i = 0; i < ci->children_num; i++)
{
oconfig_item_t *child = ci->children + i;
if (strcasecmp ("Type", child->key) == 0)
status = cf_util_get_string (child, &key->type);
else if (strcasecmp ("Instance", child->key) == 0)
status = cf_util_get_string (child, &key->instance);
else
{
WARNING ("curl_json plugin: Option `%s' not allowed here.", child->key);
status = -1;
}
if (status != 0)
break;
} /* for (i = 0; i < ci->children_num; i++) */
while (status == 0)
{
if (key->type == NULL)
{
WARNING ("curl_json plugin: `Type' missing in `Key' block.");
status = -1;
}
break;
} /* while (status == 0) */
/* store path in a tree that will match the json map structure, example:
* "httpd/requests/count",
* "httpd/requests/current" ->
* { "httpd": { "requests": { "count": $key, "current": $key } } }
*/
if (status == 0)
{
char *ptr;
char *name;
char ent[PATH_MAX];
c_avl_tree_t *tree;
if (db->tree == NULL)
db->tree = cj_avl_create();
tree = db->tree;
name = key->path;
ptr = key->path;
if (*ptr == '/')
++ptr;
name = ptr;
while (*ptr)
{
if (*ptr == '/')
{
c_avl_tree_t *value;
int len;
len = ptr-name;
//.........这里部分代码省略.........
开发者ID:karcaw,项目名称:collectd,代码行数:101,代码来源:curl_json.c
示例9: o_config_add_database
static int o_config_add_database (oconfig_item_t *ci) /* {{{ */
{
o_database_t *db;
int status;
int i;
if ((ci->values_num != 1)
|| (ci->values[0].type != OCONFIG_TYPE_STRING))
{
WARNING ("oracle plugin: The `Database' block "
"needs exactly one string argument.");
return (-1);
}
db = calloc (1, sizeof (*db));
if (db == NULL)
{
ERROR ("oracle plugin: calloc failed.");
return (-1);
}
db->name = NULL;
db->host = NULL;
db->connect_id = NULL;
db->username = NULL;
db->password = NULL;
status = cf_util_get_string (ci, &db->name);
if (status != 0)
{
sfree (db);
return (status);
}
/* Fill the `o_database_t' structure.. */
for (i = 0; i < ci->children_num; i++)
{
oconfig_item_t *child = ci->children + i;
if (strcasecmp ("ConnectID", child->key) == 0)
status = cf_util_get_string (child, &db->connect_id);
else if (strcasecmp ("Host", child->key) == 0)
status = cf_util_get_string (child, &db->host);
else if (strcasecmp ("Username", child->key) == 0)
status = cf_util_get_string (child, &db->username);
else if (strcasecmp ("Password", child->key) == 0)
status = cf_util_get_string (child, &db->password);
else if (strcasecmp ("Query", child->key) == 0)
status = udb_query_pick_from_list (child, queries, queries_num,
&db->queries, &db->queries_num);
else
{
WARNING ("oracle plugin: Option `%s' not allowed here.", child->key);
status = -1;
}
if (status != 0)
break;
}
/* Check that all necessary options have been given. */
while (status == 0)
{
if (db->connect_id == NULL)
{
WARNING ("oracle plugin: `ConnectID' not given for query `%s'", db->name);
status = -1;
}
if (db->username == NULL)
{
WARNING ("oracle plugin: `Username' not given for query `%s'", db->name);
status = -1;
}
if (db->password == NULL)
{
WARNING ("oracle plugin: `Password' not given for query `%s'", db->name);
status = -1;
}
break;
} /* while (status == 0) */
while ((status == 0) && (db->queries_num > 0))
{
db->q_prep_areas = (udb_query_preparation_area_t **) calloc (
db->queries_num, sizeof (*db->q_prep_areas));
if (db->q_prep_areas == NULL)
{
WARNING ("oracle plugin: calloc failed");
status = -1;
break;
}
for (i = 0; i < db->queries_num; ++i)
{
db->q_prep_areas[i]
= udb_query_allocate_preparation_area (db->queries[i]);
if (db->q_prep_areas[i] == NULL)
{
//.........这里部分代码省略.........
开发者ID:strizhechenko,项目名称:collectd,代码行数:101,代码来源:oracle.c
示例10: varnish_config_instance
static int varnish_config_instance (const oconfig_item_t *ci) /* {{{ */
{
user_config_t *conf;
user_data_t ud;
char callback_name[DATA_MAX_NAME_LEN];
int i;
conf = malloc (sizeof (*conf));
if (conf == NULL)
return (ENOMEM);
memset (conf, 0, sizeof (*conf));
conf->instance = NULL;
varnish_config_apply_default (conf);
if (ci->values_num == 1)
{
int status;
status = cf_util_get_string (ci, &conf->instance);
if (status != 0)
{
sfree (conf);
return (status);
}
assert (conf->instance != NULL);
if (strcmp ("localhost", conf->instance) == 0)
{
sfree (conf->instance);
conf->instance = NULL;
}
}
else if (ci->values_num > 1)
{
WARNING ("Varnish plugin: \"Instance\" blocks accept only "
"one argument.");
return (EINVAL);
}
for (i = 0; i < ci->children_num; i++)
{
oconfig_item_t *child = ci->children + i;
if (strcasecmp ("CollectCache", child->key) == 0)
cf_util_get_boolean (child, &conf->collect_cache);
else if (strcasecmp ("CollectConnections", child->key) == 0)
cf_util_get_boolean (child, &conf->collect_connections);
else if (strcasecmp ("CollectESI", child->key) == 0)
cf_util_get_boolean (child, &conf->collect_esi);
#ifdef HAVE_VARNISH_V3
else if (strcasecmp ("CollectDirectorDNS", child->key) == 0)
cf_util_get_boolean (child, &conf->collect_dirdns);
#endif
else if (strcasecmp ("CollectBackend", child->key) == 0)
cf_util_get_boolean (child, &conf->collect_backend);
else if (strcasecmp ("CollectFetch", child->key) == 0)
cf_util_get_boolean (child, &conf->collect_fetch);
else if (strcasecmp ("CollectHCB", child->key) == 0)
cf_util_get_boolean (child, &conf->collect_hcb);
else if (strcasecmp ("CollectObjects", child->key) == 0)
cf_util_get_boolean (child, &conf->collect_objects);
#if HAVE_VARNISH_V2
else if (strcasecmp ("CollectPurge", child->key) == 0)
cf_util_get_boolean (child, &conf->collect_purge);
#else
else if (strcasecmp ("CollectBan", child->key) == 0)
cf_util_get_boolean (child, &conf->collect_ban);
#endif
else if (strcasecmp ("CollectSession", child->key) == 0)
cf_util_get_boolean (child, &conf->collect_session);
else if (strcasecmp ("CollectSHM", child->key) == 0)
cf_util_get_boolean (child, &conf->collect_shm);
else if (strcasecmp ("CollectSMS", child->key) == 0)
cf_util_get_boolean (child, &conf->collect_sms);
#if HAVE_VARNISH_V2
else if (strcasecmp ("CollectSMA", child->key) == 0)
cf_util_get_boolean (child, &conf->collect_sma);
else if (strcasecmp ("CollectSM", child->key) == 0)
cf_util_get_boolean (child, &conf->collect_sm);
#endif
else if (strcasecmp ("CollectStruct", child->key) == 0)
cf_util_get_boolean (child, &conf->collect_struct);
else if (strcasecmp ("CollectTotals", child->key) == 0)
cf_util_get_boolean (child, &conf->collect_totals);
#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4
else if (strcasecmp ("CollectUptime", child->key) == 0)
cf_util_get_boolean (child, &conf->collect_uptime);
#endif
else if (strcasecmp ("CollectVCL", child->key) == 0)
cf_util_get_boolean (child, &conf->collect_vcl);
else if (strcasecmp ("CollectWorkers", child->key) == 0)
cf_util_get_boolean (child, &conf->collect_workers);
#if HAVE_VARNISH_V4
else if (strcasecmp ("CollectVSM", child->key) == 0)
cf_util_get_boolean (child, &conf->collect_vsm);
#endif
else
{
WARNING ("Varnish plugin: Ignoring unknown "
//.........这里部分代码省略.........
开发者ID:QualityUnit,项目名称:collectd,代码行数:101,代码来源:varnish.c
示例11: cdbi_config_add_database
static int cdbi_config_add_database (oconfig_item_t *ci) /* {{{ */
{
cdbi_database_t *db;
int status;
int i;
if ((ci->values_num != 1)
|| (ci->values[0].type != OCONFIG_TYPE_STRING))
{
WARNING ("dbi plugin: The `Database' block "
"needs exactly one string argument.");
return (-1);
}
db = (cdbi_database_t *) malloc (sizeof (*db));
if (db == NULL)
{
ERROR ("dbi plugin: malloc failed.");
return (-1);
}
memset (db, 0, sizeof (*db));
status = cf_util_get_string (ci, &db->name);
if (status != 0)
{
sfree (db);
return (status);
}
/* Fill the `cdbi_database_t' structure.. */
for (i = 0; i < ci->children_num; i++)
{
oconfig_item_t *child = ci->children + i;
if (strcasecmp ("Driver", child->key) == 0)
status = cf_util_get_string (child, &db->driver);
else if (strcasecmp ("DriverOption", child->key) == 0)
status = cdbi_config_add_database_driver_option (db, child);
else if (strcasecmp ("SelectDB", child->key) == 0)
status = cf_util_get_string (child, &db->select_db);
else if (strcasecmp ("Query", child->key) == 0)
status = udb_query_pick_from_list (child, queries, queries_num,
&db->queries, &db->queries_num);
else
{
WARNING ("dbi plugin: Option `%s' not allowed here.", child->key);
status = -1;
}
if (status != 0)
break;
}
/* Check that all necessary options have been given. */
while (status == 0)
{
if (db->driver == NULL)
{
WARNING ("dbi plugin: `Driver' not given for database `%s'", db->name);
status = -1;
}
if (db->driver_options_num == 0)
{
WARNING ("dbi plugin: No `DriverOption' given for database `%s'. "
"This will likely not work.", db->name);
}
break;
} /* while (status == 0) */
while ((status == 0) && (db->queries_num > 0))
{
db->q_prep_areas = (udb_query_preparation_area_t **) calloc (
db->queries_num, sizeof (*db->q_prep_areas));
if (db->q_prep_areas == NULL)
{
WARNING ("dbi plugin: malloc failed");
status = -1;
break;
}
for (i = 0; i < db->queries_num; ++i)
{
db->q_prep_areas[i]
= udb_query_allocate_preparation_area (db->queries[i]);
if (db->q_prep_areas[i] == NULL)
{
WARNING ("dbi plugin: udb_query_allocate_preparation_area failed");
status = -1;
break;
}
}
break;
}
/* If all went well, add this database to the global list of databases. */
if (status == 0)
//.........这里部分代码省略.........
开发者ID:adrahon,项目名称:collectd,代码行数:101,代码来源:dbi.c
示例12: ctail_config_add_match
static int ctail_config_add_match(cu_tail_match_t *tm, const char *plugin_name,
const char *plugin_instance,
oconfig_item_t *ci) {
ctail_config_match_t cm = {0};
int status;
if (ci->values_num != 0) {
WARNING("tail plugin: Ignoring arguments for the `Match' block.");
}
status = 0;
for (int i = 0; i < ci->children_num; i++) {
oconfig_item_t *option = ci->children + i;
if (strcasecmp("Regex", option->key) == 0)
status = cf_util_get_string(option, &cm.regex);
else if (strcasecmp("ExcludeRegex", option->key) == 0)
status = cf_util_get_string(option, &cm.excluderegex);
else if (strcasecmp("DSType", option->key) == 0)
status = ctail_config_add_match_dstype(&cm, option);
else if (strcasecmp("Type", option->key) == 0)
status = cf_util_get_string(option, &cm.type);
else if (strcasecmp("Instance", option->key) == 0)
status = cf_util_get_string(option, &cm.type_instance);
else {
WARNING("tail plugin: Option `%s' not allowed here.", option->key);
status = -1;
}
if (status != 0)
break;
} /* for (i = 0; i < ci->children_num; i++) */
while (status == 0) {
if (cm.regex == NULL) {
WARNING("tail plugin: `Regex' missing in `Match' block.");
status = -1;
break;
}
if (cm.type == NULL) {
WARNING("tail plugin: `Type' missing in `Match' block.");
status = -1;
break;
}
if (cm.flags == 0) {
WARNING("tail plugin: `DSType' missing in `Match' block.");
status = -1;
break;
}
break;
} /* while (status == 0) */
if (status == 0) {
// TODO(octo): there's nothing "simple" about the latency stuff …
status = tail_match_add_match_simple(
tm, cm.regex, cm.excluderegex, cm.flags,
(plugin_name != NULL) ? plugin_name : "tail", plugin_instance, cm.type,
cm.type_instance, cm.latency);
if (status != 0)
ERROR("tail plugin: tail_match_add_match_simple failed.");
}
sfree(cm.regex);
sfree(cm.excluderegex);
sfree(cm.type);
sfree(cm.type_instance);
latency_config_free(cm.latency);
return status;
} /* int ctail_config_add_match */
开发者ID:collectd,项目名称:collectd,代码行数:74,代码来源:tail.c
示例13: mb_config_add_data
static int mb_config_add_data (oconfig_item_t *ci) /* {{{ */
{
mb_data_t data;
int status;
int i;
memset (&data, 0, sizeof (data));
data.name = NULL;
data.register_type = REG_TYPE_UINT16;
data.next = NULL;
status = cf_util_get_string (ci, &data.name);
if (status != 0)
return (status);
for (i = 0; i < ci->children_num; i++)
{
oconfig_item_t *child = ci->children + i;
status = 0;
if (strcasecmp ("Type", child->key) == 0)
status = cf_util_get_string_buffer (child,
data.type, sizeof (data.type));
else if (strcasecmp ("Instance", child->key) == 0)
status = cf_util_get_string_buffer (child,
data.instance, sizeof (data.instance));
else if (strcasecmp ("RegisterBase", child->key) == 0)
status = cf_util_get_int (child, &data.register_base);
else if (strcasecmp ("RegisterType", child->key) == 0)
{
char tmp[16];
status = cf_util_get_string_buffer (child, tmp, sizeof (tmp));
if (status != 0)
/* do nothing */;
else if (strcasecmp ("Uint16", tmp) == 0)
data.register_type = REG_TYPE_UINT16;
else if (strcasecmp ("Uint32", tmp) == 0)
data.register_type = REG_TYPE_UINT32;
else if (strcasecmp ("Float", tmp) == 0)
data.register_type = REG_TYPE_FLOAT;
else
{
ERROR ("Modbus plugin: The register type \"%s\" is unknown.", tmp);
status = -1;
}
}
else
{
ERROR ("Modbus plugin: Unknown configuration option: %s", child->key);
status = -1;
}
if (status != 0)
break;
} /* for (i = 0; i < ci->children_num; i++) */
assert (data.name != NULL);
if (data.type[0] == 0)
{
ERROR ("Modbus plugin: Data block \"%s\": No type has been specified.",
data.name);
status = -1;
}
if (status == 0)
data_copy (&data_definitions, &data);
sfree (data.name);
return (status);
} /* }}} int mb_config_add_data */
开发者ID:kimor79,项目名称:collectd,代码行数:71,代码来源:modbus.c
示例14: cx_config_add_url
static int cx_config_add_url(oconfig_item_t *ci) /* {{{ */
{
if ((ci->values_num != 1) || (ci->values[0].type != OCONFIG_TYPE_STRING)) {
WARNING("curl_xml plugin: The `URL' block "
"needs exactly one string argument.");
return -1;
}
cx_t *db = calloc(1, sizeof(*db));
if (db == NULL) {
ERROR("curl_xml plugin: calloc failed.");
return -1;
}
db->instance = strdup("default");
if (db->instance == NULL) {
ERROR("curl_xml plugin: strdup failed.");
sfree(db);
return -1;
}
db->xpath_list = llist_create();
if (db->xpath_list == NULL) {
ERROR("curl_xml plugin: list creation failed.");
sfree(db->instance);
sfree(db);
return -1;
}
db->timeout = -1;
int status = cf_util_get_string(ci, &db->url);
if (status != 0) {
llist_destroy(db->xpath_list);
sfree(db->instance);
sfree(db);
return status;
}
/* Fill the `cx_t' structure.. */
for (int i = 0; i < ci->children_num; i++) {
oconfig_item_t *child = ci->children + i;
if (strcasecmp("Instance", child->key) == 0)
status = cf_util_get_string(child, &db->instance);
else if (strcasecmp("Plugin", child->key) == 0)
status = cf_util_get_string(child, &db->plugin_name);
else if (strcasecmp("Host", child->key) == 0)
status = cf_util_get_string(child, &db->host);
else if (strcasecmp("User", child->key) == 0)
status = cf_util_get_string(child, &db->user);
else if (strcasecmp("Password", child->key) == 0)
status = cf_util_get_string(child, &db->pass);
else if (strcasecmp("Digest", child->key) == 0)
status = cf_util_get_boolean(child, &db->digest);
else if (strcasecmp("VerifyPeer", child->key) == 0)
status = cf_util_get_boolean(child, &db->verify_peer);
else if (strcasecmp("VerifyHost", child->key) == 0)
status = cf_util_get_boolean(child, &db->verify_host);
else if (strcasecmp("CACert", child->key) == 0)
status = cf_util_get_string(child, &db->cacert);
else if (strcasecmp("xpath", child->key) == 0)
status = cx_config_add_xpath(db, child);
else if (strcasecmp("Header", child->key) == 0)
status = cx_config_append_string("Header", &db->headers, child);
else if (strcasecmp("Post", child->key) == 0)
status = cf_util_get_string(child, &db->post_body);
else if (strcasecmp("Namespace", child->key) == 0)
status = cx_config_add_namespace(db, child);
else if (strcasecmp("Timeout", child->key) == 0)
status = cf_util_get_int(child, &db->timeout);
else if (strcasecmp("Statistics", child->key) == 0) {
db->stats = curl_stats_from_config(child);
if (db->stats == NULL)
status = -1;
} else {
WARNING("curl_xml plugin: Option `%s' not allowed here.", child->key);
status = -1;
}
if (status != 0)
break;
}
if (status != 0) {
cx_free(db);
return status;
}
if (llist_size(db->xpath_list) == 0) {
WARNING("curl_xml plugin: No `xpath' block within `URL' block `%s'.",
db->url);
cx_free(db);
return -1;
}
if (cx_init_curl(db) != 0) {
cx_free(db);
return -1;
}
//.........这里部分代码省略.........
开发者ID:EMSL-MSC,项目名称:collectd,代码行数:101,代码来源:curl_xml.c
示例15: cx_config_add_xpath
static int cx_config_add_xpath(cx_t *db, oconfig_item_t *ci) /* {{{ */
{
cx_xpath_t *xpath = calloc(1, sizeof(*xpath));
if (xpath == NULL) {
ERROR("curl_xml plugin: calloc failed.");
return -1;
}
int status = cf_util_get_string(ci, &xpath->path);
if (status != 0) {
cx_xpath_free(xpath);
return status;
}
/* error out if xpath->path is an empty string */
if (strlen(xpath->path) == 0) {
ERROR("curl_xml plugin: invalid xpath. "
"xpath value can't be an empty string");
cx_xpath_free(xpath);
return -1;
}
status = 0;
for (int i = 0; i < ci->children_num; i++) {
oconfig_item_t *child = ci->children + i;
if (strcasecmp("Type", child->key) == 0)
status = cf_util_get_string(child, &xpath->type);
else if (strcasecmp("InstancePrefix", child->key) == 0)
status = cf_util_get_string(child, &xpath->instance_prefix);
else if (strcasecmp("InstanceFrom", child->key) == 0)
status = cf_util_get_string(child, &xpath->instance);
else if (strcasecmp("PluginInstanceFrom", child->key) == 0)
status = cf_util_get_string(child, &xpath->plugin_instance_from);
else if (strcasecmp("ValuesFrom", child->key) == 0)
status = cx_config_add_values("ValuesFrom", xpath, child);
else {
WARNING("curl_xml plugin: Option `%s' not allowed here.", child->key);
status = -1;
}
if (status != 0)
break;
} /* for (i = 0; i < ci->children_num; i++) */
if (status != 0) {
cx_xpath_free(xpath);
return status;
}
if (xpath->type == NULL) {
WARNING("curl_xml plugin: `Type' missing in `xpath' block.");
cx_xpath_free(xpath);
return -1;
}
if (xpath->values_len == 0) {
WARNING("curl_xml plugin: `ValuesFrom' missing in `xpath' block.");
cx_xpath_free(xpath);
return -1;
}
llentry_t *le = llentry_create(xpath->path, xpath);
if (le == NULL) {
ERROR("curl_xml plugin: llentry_create failed.");
cx_xpath_free(xpath);
return -1;
}
llist_append(db->xpath_list, le);
return 0;
} /* }}} int cx_config_add_xpath */
开发者ID:EMSL-MSC,项目名称:collectd,代码行数:72,代码来源:curl_xml.c
示例16: config_add_instance
/* Configuration handling functiions
* <Plugin memcached>
* <Instance "instance_name">
* Host foo.zomg.com
* Port "1234"
* </Instance>
* </Plugin>
*/
static int config_add_instance(oconfig_item_t *ci)
{
memcached_t *st;
int i;
int
|
请发表评论