summaryrefslogtreecommitdiff
path: root/src/status_counter.c
diff options
context:
space:
mode:
authorKrzysztof Krzyżaniak <eloy@debian.org>2006-09-25 08:27:05 +0000
committerKrzysztof Krzyżaniak <eloy@debian.org>2006-09-25 08:27:05 +0000
commitcb3017146d5322069fe4003ffcd4c9ada74dacb8 (patch)
tree5a07eefc6cfd6c668292bfa3471d993dc3b88f1f /src/status_counter.c
parent8e8fd7ec0fc30c1703a192edfceefac6ab5f0f0c (diff)
downloadlighttpd-cb3017146d5322069fe4003ffcd4c9ada74dacb8.tar.gz
eloy: new upstream version
Diffstat (limited to 'src/status_counter.c')
-rw-r--r--src/status_counter.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/status_counter.c b/src/status_counter.c
new file mode 100644
index 0000000..3b345cd
--- /dev/null
+++ b/src/status_counter.c
@@ -0,0 +1,60 @@
+#include <stdlib.h>
+
+#include "status_counter.h"
+/**
+ * The status array can carry all the status information you want
+ * the key to the array is <module-prefix>.<name>
+ * and the values are counters
+ *
+ * example:
+ * fastcgi.backends = 10
+ * fastcgi.active-backends = 6
+ * fastcgi.backend.<key>.load = 24
+ * fastcgi.backend.<key>....
+ *
+ * fastcgi.backend.<key>.disconnects = ...
+ */
+
+data_integer *status_counter_get_counter(server *srv, const char *s, size_t len) {
+ data_integer *di;
+
+ if (NULL == (di = (data_integer *)array_get_element(srv->status, s))) {
+ /* not found, create it */
+
+ if (NULL == (di = (data_integer *)array_get_unused_element(srv->status, TYPE_INTEGER))) {
+ di = data_integer_init();
+ }
+ buffer_copy_string_len(di->key, s, len);
+ di->value = 0;
+
+ array_insert_unique(srv->status, (data_unset *)di);
+ }
+ return di;
+}
+
+/* dummies of the statistic framework functions
+ * they will be moved to a statistics.c later */
+int status_counter_inc(server *srv, const char *s, size_t len) {
+ data_integer *di = status_counter_get_counter(srv, s, len);
+
+ di->value++;
+
+ return 0;
+}
+
+int status_counter_dec(server *srv, const char *s, size_t len) {
+ data_integer *di = status_counter_get_counter(srv, s, len);
+
+ if (di->value > 0) di->value--;
+
+ return 0;
+}
+
+int status_counter_set(server *srv, const char *s, size_t len, int val) {
+ data_integer *di = status_counter_get_counter(srv, s, len);
+
+ di->value = val;
+
+ return 0;
+}
+