Annotation of embedaddon/lighttpd/src/status_counter.c, revision 1.1

1.1     ! misho       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: 
        !            19: data_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 */
        !            38: int 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: 
        !            46: int 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: 
        !            54: int 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: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>