X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fpinba.c;h=76b765b8c0b4e096398da12601e64f1f4e06fcbf;hb=e14e8b7f5c5bf9d0fe5cc632c6383f304d4ac2ad;hp=e94ad8f61b667b0728085bff1c5a7129f9dcd802;hpb=3aeca36659b04725028f123bcea387a37581624a;p=collectd.git diff --git a/src/pinba.c b/src/pinba.c index e94ad8f6..76b765b8 100644 --- a/src/pinba.c +++ b/src/pinba.c @@ -24,12 +24,10 @@ **/ #include "collectd.h" + #include "common.h" #include "plugin.h" -#include "configfile.h" -#include -#include #include #include @@ -172,7 +170,7 @@ static void service_statnode_add(const char *name, /* {{{ */ const char *script) { pinba_statnode_t *node; - + node = realloc (stat_nodes, sizeof (*stat_nodes) * (stat_nodes_num + 1)); if (node == NULL) @@ -184,7 +182,7 @@ static void service_statnode_add(const char *name, /* {{{ */ node = stat_nodes + stat_nodes_num; memset (node, 0, sizeof (*node)); - + /* reset strings */ node->name = NULL; node->host = NULL; @@ -192,13 +190,13 @@ static void service_statnode_add(const char *name, /* {{{ */ node->script = NULL; node->mem_peak = NAN; - + /* fill query data */ strset (&node->name, name); strset (&node->host, host); strset (&node->server, server); strset (&node->script, script); - + /* increment counter */ stat_nodes_num++; } /* }}} void service_statnode_add */ @@ -210,14 +208,14 @@ static unsigned int service_statnode_collect (pinba_statnode_t *res, /* {{{ */ unsigned int index) { pinba_statnode_t *node; - + if (stat_nodes_num == 0) return 0; - + /* begin collecting */ if (index == 0) pthread_mutex_lock (&stat_nodes_lock); - + /* end collecting */ if (index >= stat_nodes_num) { @@ -230,7 +228,7 @@ static unsigned int service_statnode_collect (pinba_statnode_t *res, /* {{{ */ /* reset node */ node->mem_peak = NAN; - + return (index + 1); } /* }}} unsigned int service_statnode_collect */ @@ -253,11 +251,9 @@ static void service_statnode_process (pinba_statnode_t *node, /* {{{ */ static void service_process_request (Pinba__Request *request) /* {{{ */ { - unsigned int i; - pthread_mutex_lock (&stat_nodes_lock); - - for (i = 0; i < stat_nodes_num; i++) + + for (unsigned int i = 0; i < stat_nodes_num; i++) { if ((stat_nodes[i].host != NULL) && (strcmp (request->hostname, stat_nodes[i].host) != 0)) @@ -273,7 +269,7 @@ static void service_process_request (Pinba__Request *request) /* {{{ */ service_statnode_process(&stat_nodes[i], request); } - + pthread_mutex_unlock(&stat_nodes_lock); } /* }}} void service_process_request */ @@ -353,25 +349,20 @@ static pinba_socket_t *pinba_socket_open (const char *node, /* {{{ */ { pinba_socket_t *s; struct addrinfo *ai_list; - struct addrinfo *ai_ptr; - struct addrinfo ai_hints; int status; - memset (&ai_hints, 0, sizeof (ai_hints)); - ai_hints.ai_flags = AI_PASSIVE; - ai_hints.ai_family = AF_UNSPEC; - ai_hints.ai_socktype = SOCK_DGRAM; - ai_hints.ai_addr = NULL; - ai_hints.ai_canonname = NULL; - ai_hints.ai_next = NULL; - if (node == NULL) node = PINBA_DEFAULT_NODE; if (service == NULL) service = PINBA_DEFAULT_SERVICE; - ai_list = NULL; + struct addrinfo ai_hints = { + .ai_family = AF_UNSPEC, + .ai_flags = AI_PASSIVE, + .ai_socktype = SOCK_DGRAM + }; + status = getaddrinfo (node, service, &ai_hints, &ai_list); if (status != 0) @@ -382,22 +373,21 @@ static pinba_socket_t *pinba_socket_open (const char *node, /* {{{ */ } assert (ai_list != NULL); - s = malloc (sizeof (*s)); + s = calloc (1, sizeof (*s)); if (s == NULL) { freeaddrinfo (ai_list); - ERROR ("pinba plugin: malloc failed."); + ERROR ("pinba plugin: calloc failed."); return (NULL); } - memset (s, 0, sizeof (*s)); - for (ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next) + for (struct addrinfo *ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next) { status = pb_add_socket (s, ai_ptr); if (status != 0) break; } /* for (ai_list) */ - + freeaddrinfo (ai_list); if (s->fd_num < 1) @@ -412,35 +402,33 @@ static pinba_socket_t *pinba_socket_open (const char *node, /* {{{ */ static void pinba_socket_free (pinba_socket_t *socket) /* {{{ */ { - nfds_t i; - if (!socket) return; - - for (i = 0; i < socket->fd_num; i++) + + for (nfds_t i = 0; i < socket->fd_num; i++) { if (socket->fd[i].fd < 0) continue; close (socket->fd[i].fd); socket->fd[i].fd = -1; } - + sfree(socket); } /* }}} void pinba_socket_free */ static int pinba_process_stats_packet (const uint8_t *buffer, /* {{{ */ size_t buffer_size) { - Pinba__Request *request; - + Pinba__Request *request; + request = pinba__request__unpack (NULL, buffer_size, buffer); - + if (!request) return (-1); service_process_request(request); pinba__request__free_unpacked (request, NULL); - + return (0); } /* }}} int pinba_process_stats_packet */ @@ -508,7 +496,6 @@ static int receive_loop (void) /* {{{ */ while (!collector_thread_do_shutdown) { int status; - nfds_t i; if (s->fd_num < 1) break; @@ -531,7 +518,7 @@ static int receive_loop (void) /* {{{ */ return (-1); } - for (i = 0; i < s->fd_num; i++) + for (nfds_t i = 0; i < s->fd_num; i++) { if (s->fd[i].revents & (POLLERR | POLLHUP | POLLNVAL)) { @@ -571,13 +558,12 @@ static int pinba_config_view (const oconfig_item_t *ci) /* {{{ */ char *server = NULL; char *script = NULL; int status; - int i; status = cf_util_get_string (ci, &name); if (status != 0) return (status); - for (i = 0; i < ci->children_num; i++) + for (int i = 0; i < ci->children_num; i++) { oconfig_item_t *child = ci->children + i; @@ -610,13 +596,11 @@ static int pinba_config_view (const oconfig_item_t *ci) /* {{{ */ static int plugin_config (oconfig_item_t *ci) /* {{{ */ { - int i; - /* The lock should not be necessary in the config callback, but let's be * sure.. */ pthread_mutex_lock (&stat_nodes_lock); - for (i = 0; i < ci->children_num; i++) + for (int i = 0; i < ci->children_num; i++) { oconfig_item_t *child = ci->children + i; @@ -631,7 +615,7 @@ static int plugin_config (oconfig_item_t *ci) /* {{{ */ } pthread_mutex_unlock(&stat_nodes_lock); - + return (0); } /* }}} int pinba_config */ @@ -693,38 +677,36 @@ static int plugin_shutdown (void) /* {{{ */ static int plugin_submit (const pinba_statnode_t *res) /* {{{ */ { - value_t value; value_list_t vl = VALUE_LIST_INIT; - - vl.values = &value; + vl.values_len = 1; sstrncpy (vl.host, hostname_g, sizeof (vl.host)); sstrncpy (vl.plugin, "pinba", sizeof (vl.plugin)); sstrncpy (vl.plugin_instance, res->name, sizeof (vl.plugin_instance)); - value.derive = res->req_count; - sstrncpy (vl.type, "total_requests", sizeof (vl.type)); + vl.values = &(value_t) { .derive = res->req_count }; + sstrncpy (vl.type, "total_requests", sizeof (vl.type)); plugin_dispatch_values (&vl); - value.derive = float_counter_get (&res->req_time, /* factor = */ 1000); - sstrncpy (vl.type, "total_time_in_ms", sizeof (vl.type)); + vl.values = &(value_t) { .derive = float_counter_get (&res->req_time, /* factor = */ 1000) }; + sstrncpy (vl.type, "total_time_in_ms", sizeof (vl.type)); plugin_dispatch_values (&vl); - value.derive = res->doc_size; - sstrncpy (vl.type, "total_bytes", sizeof (vl.type)); + vl.values = &(value_t) { .derive = res->doc_size }; + sstrncpy (vl.type, "total_bytes", sizeof (vl.type)); plugin_dispatch_values (&vl); - value.derive = float_counter_get (&res->ru_utime, /* factor = */ 100); + vl.values = &(value_t) { .derive = float_counter_get (&res->ru_utime, /* factor = */ 100) }; sstrncpy (vl.type, "cpu", sizeof (vl.type)); sstrncpy (vl.type_instance, "user", sizeof (vl.type_instance)); plugin_dispatch_values (&vl); - value.derive = float_counter_get (&res->ru_stime, /* factor = */ 100); + vl.values = &(value_t) { .derive = float_counter_get (&res->ru_stime, /* factor = */ 100) }; sstrncpy (vl.type, "cpu", sizeof (vl.type)); sstrncpy (vl.type_instance, "system", sizeof (vl.type_instance)); plugin_dispatch_values (&vl); - value.gauge = res->mem_peak; + vl.values = &(value_t) { .gauge = res->mem_peak }; sstrncpy (vl.type, "memory", sizeof (vl.type)); sstrncpy (vl.type_instance, "peak", sizeof (vl.type_instance)); plugin_dispatch_values (&vl); @@ -736,12 +718,12 @@ static int plugin_read (void) /* {{{ */ { unsigned int i=0; pinba_statnode_t data; - + while ((i = service_statnode_collect (&data, i)) != 0) { plugin_submit (&data); } - + return 0; } /* }}} int plugin_read */