• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/router/lighttpd-1.4.39/src/
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