X-Git-Url: https://git.octo.it/?p=collectd.git;a=blobdiff_plain;f=src%2Fwrite_mongodb.c;h=9cddc9167fc4fcdeace97ad4df0bd725d264c298;hp=f585a39660b55582ea18b618f708a78558c48938;hb=d486225f89ea52d8ed2b4242eba2ad94c409f837;hpb=2c59754399236dee51c68b0b624242c61f89c4c0 diff --git a/src/write_mongodb.c b/src/write_mongodb.c index f585a396..9cddc916 100644 --- a/src/write_mongodb.c +++ b/src/write_mongodb.c @@ -50,8 +50,8 @@ struct wm_node_s { char *user; char *passwd; - _Bool store_rates; - _Bool connected; + bool store_rates; + bool connected; mongoc_client_t *client; mongoc_database_t *database; @@ -63,7 +63,7 @@ typedef struct wm_node_s wm_node_t; * Functions */ static bson_t *wm_create_bson(const data_set_t *ds, /* {{{ */ - const value_list_t *vl, _Bool store_rates) { + const value_list_t *vl, bool store_rates) { bson_t *ret; bson_t subarray; gauge_t *rates; @@ -93,10 +93,10 @@ static bson_t *wm_create_bson(const data_set_t *ds, /* {{{ */ BSON_APPEND_UTF8(ret, "type_instance", vl->type_instance); BSON_APPEND_ARRAY_BEGIN(ret, "values", &subarray); /* {{{ */ - for (int i = 0; i < ds->ds_num; i++) { + for (size_t i = 0; i < ds->ds_num; i++) { char key[16]; - ssnprintf(key, sizeof(key), "%i", i); + snprintf(key, sizeof(key), "%" PRIsz, i); if (ds->ds[i].type == DS_TYPE_GAUGE) BSON_APPEND_DOUBLE(&subarray, key, vl->values[i].gauge); @@ -109,7 +109,7 @@ static bson_t *wm_create_bson(const data_set_t *ds, /* {{{ */ else if (ds->ds[i].type == DS_TYPE_ABSOLUTE) BSON_APPEND_INT64(&subarray, key, vl->values[i].absolute); else { - ERROR("write_mongodb plugin: Unknown ds_type %d for index %d", + ERROR("write_mongodb plugin: Unknown ds_type %d for index %" PRIsz, ds->ds[i].type, i); bson_destroy(ret); return NULL; @@ -118,10 +118,10 @@ static bson_t *wm_create_bson(const data_set_t *ds, /* {{{ */ bson_append_array_end(ret, &subarray); /* }}} values */ BSON_APPEND_ARRAY_BEGIN(ret, "dstypes", &subarray); /* {{{ */ - for (int i = 0; i < ds->ds_num; i++) { + for (size_t i = 0; i < ds->ds_num; i++) { char key[16]; - ssnprintf(key, sizeof(key), "%i", i); + snprintf(key, sizeof(key), "%" PRIsz, i); if (store_rates) BSON_APPEND_UTF8(&subarray, key, "gauge"); @@ -131,10 +131,10 @@ static bson_t *wm_create_bson(const data_set_t *ds, /* {{{ */ bson_append_array_end(ret, &subarray); /* }}} dstypes */ BSON_APPEND_ARRAY_BEGIN(ret, "dsnames", &subarray); /* {{{ */ - for (int i = 0; i < ds->ds_num; i++) { + for (size_t i = 0; i < ds->ds_num; i++) { char key[16]; - ssnprintf(key, sizeof(key), "%i", i); + snprintf(key, sizeof(key), "%" PRIsz, i); BSON_APPEND_UTF8(&subarray, key, ds->ds[i].name); } bson_append_array_end(ret, &subarray); /* }}} dsnames */ @@ -144,7 +144,7 @@ static bson_t *wm_create_bson(const data_set_t *ds, /* {{{ */ size_t error_location; if (!bson_validate(ret, BSON_VALIDATE_UTF8, &error_location)) { ERROR("write_mongodb plugin: Error in generated BSON document " - "at byte %zu", + "at byte %" PRIsz, error_location); bson_destroy(ret); return NULL; @@ -156,74 +156,65 @@ static bson_t *wm_create_bson(const data_set_t *ds, /* {{{ */ static int wm_initialize(wm_node_t *node) /* {{{ */ { char *uri; - size_t uri_length; - char const *format_string; - if (node->connected) { + if (node->connected) return 0; - } INFO("write_mongodb plugin: Connecting to [%s]:%d", node->host, node->port); if ((node->db != NULL) && (node->user != NULL) && (node->passwd != NULL)) { - format_string = "mongodb://%s:%s@%s:%d/?authSource=%s"; - uri_length = strlen(format_string) + strlen(node->user) + - strlen(node->passwd) + strlen(node->host) + 5 + - strlen(node->db) + 1; - if ((uri = calloc(1, uri_length)) == NULL) { + uri = ssnprintf_alloc("mongodb://%s:%s@%s:%d/?authSource=%s", node->user, + node->passwd, node->host, node->port, node->db); + if (uri == NULL) { ERROR("write_mongodb plugin: Not enough memory to assemble " "authentication string."); mongoc_client_destroy(node->client); node->client = NULL; - node->connected = 0; + node->connected = false; return -1; } - ssnprintf(uri, uri_length, format_string, node->user, node->passwd, - node->host, node->port, node->db); node->client = mongoc_client_new(uri); if (!node->client) { ERROR("write_mongodb plugin: Authenticating to [%s]:%d for database " "\"%s\" as user \"%s\" failed.", node->host, node->port, node->db, node->user); - node->connected = 0; + node->connected = false; sfree(uri); return -1; } } else { - format_string = "mongodb://%s:%d"; - uri_length = strlen(format_string) + strlen(node->host) + 5 + 1; - if ((uri = calloc(1, uri_length)) == NULL) { + uri = ssnprintf_alloc("mongodb://%s:%d", node->host, node->port); + if (uri == NULL) { ERROR("write_mongodb plugin: Not enough memory to assemble " "authentication string."); mongoc_client_destroy(node->client); node->client = NULL; - node->connected = 0; + node->connected = false; return -1; } - snprintf(uri, uri_length, format_string, node->host, node->port); node->client = mongoc_client_new(uri); if (!node->client) { ERROR("write_mongodb plugin: Connecting to [%s]:%d failed.", node->host, node->port); - node->connected = 0; + node->connected = false; sfree(uri); return -1; } + sfree(uri); } - sfree(uri); node->database = mongoc_client_get_database(node->client, "collectd"); if (!node->database) { ERROR("write_mongodb plugin: error creating/getting database"); mongoc_client_destroy(node->client); node->client = NULL; - node->connected = 0; + node->connected = false; return -1; } - node->connected = 1; + node->connected = true; return 0; } /* }}} int wm_initialize */ @@ -257,7 +248,7 @@ static int wm_write(const data_set_t *ds, /* {{{ */ mongoc_client_destroy(node->client); node->database = NULL; node->client = NULL; - node->connected = 0; + node->connected = false; pthread_mutex_unlock(&node->lock); bson_destroy(bson_record); return -1; @@ -272,7 +263,7 @@ static int wm_write(const data_set_t *ds, /* {{{ */ mongoc_client_destroy(node->client); node->database = NULL; node->client = NULL; - node->connected = 0; + node->connected = false; pthread_mutex_unlock(&node->lock); bson_destroy(bson_record); mongoc_collection_destroy(collection); @@ -300,7 +291,7 @@ static void wm_config_free(void *ptr) /* {{{ */ mongoc_client_destroy(node->client); node->database = NULL; node->client = NULL; - node->connected = 0; + node->connected = false; sfree(node->host); sfree(node); @@ -321,7 +312,7 @@ static int wm_config_node(oconfig_item_t *ci) /* {{{ */ return ENOMEM; } node->port = MONGOC_DEFAULT_PORT; - node->store_rates = 1; + node->store_rates = true; pthread_mutex_init(&node->lock, /* attr = */ NULL); status = cf_util_get_string_buffer(ci, node->name, sizeof(node->name)); @@ -375,9 +366,9 @@ static int wm_config_node(oconfig_item_t *ci) /* {{{ */ } if (status == 0) { - char cb_name[DATA_MAX_NAME_LEN]; + char cb_name[sizeof("write_mongodb/") + DATA_MAX_NAME_LEN]; - ssnprintf(cb_name, sizeof(cb_name), "write_mongodb/%s", node->name); + snprintf(cb_name, sizeof(cb_name), "write_mongodb/%s", node->name); status = plugin_register_write(cb_name, wm_write,