1#include "status_counter.h" 2 3#include <stdlib.h> 4 5/** 6 * The status array can carry all the status information you want 7 * the key to the array is <module-prefix>.<name> 8 * and the values are counters 9 * 10 * example: 11 * fastcgi.backends = 10 12 * fastcgi.active-backends = 6 13 * fastcgi.backend.<key>.load = 24 14 * fastcgi.backend.<key>.... 15 * 16 * fastcgi.backend.<key>.disconnects = ... 17 */ 18 19data_integer *status_counter_get_counter(server *srv, const char *s, size_t len) { 20 data_integer *di; 21 22 if (NULL == (di = (data_integer *)array_get_element(srv->status, s))) { 23 /* not found, create it */ 24 25 if (NULL == (di = (data_integer *)array_get_unused_element(srv->status, TYPE_INTEGER))) { 26 di = data_integer_init(); 27 } 28 buffer_copy_string_len(di->key, s, len); 29 di->value = 0; 30 31 array_insert_unique(srv->status, (data_unset *)di); 32 } 33 return di; 34} 35 36/* dummies of the statistic framework functions 37 * they will be moved to a statistics.c later */ 38int status_counter_inc(server *srv, const char *s, size_t len) { 39 data_integer *di = status_counter_get_counter(srv, s, len); 40 41 di->value++; 42 43 return 0; 44} 45 46int status_counter_dec(server *srv, const char *s, size_t len) { 47 data_integer *di = status_counter_get_counter(srv, s, len); 48 49 if (di->value > 0) di->value--; 50 51 return 0; 52} 53 54int status_counter_set(server *srv, const char *s, size_t len, int val) { 55 data_integer *di = status_counter_get_counter(srv, s, len); 56 57 di->value = val; 58 59 return 0; 60} 61 62