Permalink
Browse files

Initial commit.

  • Loading branch information...
0 parents commit ec2dba1eef25c1e1a15d4b9761722971f6d68260 @jbuchbinder committed Oct 25, 2011
@@ -0,0 +1 @@
+statsd
Oops, something went wrong.
@@ -0,0 +1,49 @@
+#
+# STATSD-C
+# C port of Etsy's node.js-based statsd server
+#
+# http://github.com/jbuchbinder/statsd-c
+#
+
+BINARY= statsd
+OBJECTS= \
+ src/statsd.o \
+ src/serialize.o \
+ src/json-c/arraylist.o \
+ src/json-c/debug.o \
+ src/json-c/json_object.o \
+ src/json-c/json_tokener.o \
+ src/json-c/json_util.o \
+ src/json-c/linkhash.o \
+ src/json-c/printbuf.o
+
+# Compilation settings
+CC= gcc
+CFLAGS= -fPIC -Wall -pthread -lpthread -Isrc/json-c -Wno-format-security -Wno-int-to-pointer-cast
+
+# ANSI formatting
+BOLD=\033[1m
+UNBOLD=\033[0m
+
+all: compile
+
+compile: clean statsd
+
+clean:
+ @for F in $(BINARY) $(OBJECTS); do \
+ echo " RM $(BOLD)$$F $(UNBOLD)"; \
+ rm -f $$F; \
+ done
+
+$(BINARY): $(OBJECTS)
+ @echo " LD $(BOLD)$(BINARY)$(UNBOLD)"
+ @$(CC) $(CFLAGS) -o $(BINARY) $(OBJECTS)
+
+.c.o:
+ @echo " CC $(BOLD)$@$(UNBOLD)"
+ @gcc ${CFLAGS} -o $@ -c $<
+
+test: compile
+ @echo "* $(BOLD)Running test \"$(BINARY)\" ... $(UNBOLD)"
+ ./$(BINARY) -df -s state.json
+
@@ -0,0 +1,29 @@
+STATSD-C
+========
+
+SUMMARY
+-------
+
+Reimplementation of Etsy's infamous "statsd" in C.
+
+Your mileage may vary. It works for me, and it *should* be wire compatible with the original node.js-based statsd.
+
+There are some libraries used/included:
+
+* [json-c](http://oss.metaparadigm.com/json-c/) : JSON (de)serialization (BSD)
+* [uthash](http://uthash.sourceforge.net/ ): Hash management "library" (BSD)
+
+Build with "make".
+
+USAGE
+-----
+
+ Usage: statsd [-hDdfc] [-p port] [-m port] [-s file]
+ -p port set statsd udp listener port (default 8125)
+ -m port set statsd management port (default 8126)
+ -s file serialize state to and from file (default disabled)
+ -h this help display
+ -d enable debug
+ -D daemonize
+ -f enable friendly mode (breaks wire compatibility)
+
@@ -0,0 +1,12 @@
+TODO
+====
+
+* Refactor to use pthreads entirely instead of forking. [DONE]
+* From : https://github.com/etsy/statsd/blob/master/stats.js :
+ * Implement management interface [DONE]
+ * Implement time period handling
+ * Implement graphite export
+ * Implement universal stats counters [DONE]
+* Implement stats serialize/deserialize using JSON for persistence. [DONE]
+* Implement command line option handling. [DONE]
+
@@ -0,0 +1,22 @@
+
+#include <semaphore.h>
+
+#include "uthash/uthash.h"
+
+#ifndef __COUNTER_H__
+#define __COUNTER_H__ 1
+
+typedef struct {
+ char key[100];
+ long double value;
+ UT_hash_handle hh; /* makes this structure hashable */
+} statsd_counter_t;
+
+extern statsd_counter_t *counters;
+extern sem_t counters_lock;
+
+#define wait_for_counters_lock() sem_wait(&counters_lock)
+#define remove_counters_lock() sem_post(&counters_lock)
+
+#endif /* __COUNTER_H__ */
+
@@ -0,0 +1,24 @@
+.deps
+.libs
+aclocal.m4
+autom4te.cache
+config.guess
+config.h
+config.log
+config.status
+config.sub
+configure
+depcomp
+install-sh
+json.pc
+libtool
+ltmain.sh
+Makefile
+Makefile.in
+missing
+stamp-h1
+test1
+test2
+test4
+testSubDir
+test_parse_int64
@@ -0,0 +1,2 @@
+Michael Clark <michael@metaparadigm.com>
+C. Watford (christopher.watford@gmail.com)
@@ -0,0 +1,19 @@
+Copyright (c) 2004, 2005 Metaparadigm Pte Ltd
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
@@ -0,0 +1,129 @@
+0.10
+ * Fix a bug in json_object_get_int(), which would incorrectly return 0
+ when called on a string type object.
+ Eric Haszlakiewicz
+ * Add a json_type_to_name() function.
+ Eric Haszlakiewicz
+ * Add a json_tokener_parse_verbose() function.
+ Jehiah Czebotar
+ * Improve support for null bytes within JSON strings.
+ Jehiah Czebotar
+ * Fix file descriptor leak if memory allocation fails in json_util
+ Zachary Blair, zack_blair at hotmail dot com
+ * Add int64 support. Two new functions json_object_net_int64 and
+ json_object_get_int64. Binary compatibility preserved.
+ Eric Haszlakiewicz, EHASZLA at transunion com
+ Rui Miguel Silva Seabra, rms at 1407 dot org
+ * Fix subtle bug in linkhash where lookup could hang after all slots
+ were filled then successively freed.
+ Spotted by Jean-Marc Naud, j dash m at newtraxtech dot com
+ * Make json_object_from_file take const char *filename
+ Spotted by Vikram Raj V, vsagar at attinteractive dot com
+ * Add handling of surrogate pairs (json_tokener.c, test4.c, Makefile.am)
+ Brent Miller, bdmiller at yahoo dash inc dot com
+ * Correction to comment describing printbuf_memappend in printbuf.h
+ Brent Miller, bdmiller at yahoo dash inc dot com
+
+0.9
+ * Add README.html README-WIN32.html config.h.win32 to Makefile.am
+ Michael Clark, <michael@metaparadigm.com>
+ * Add const qualifier to the json_tokener_parse functions
+ Eric Haszlakiewicz, EHASZLA at transunion dot com
+ * Rename min and max so we can never clash with C or C++ std library
+ Ian Atha, thatha at yahoo dash inc dot com
+ * Fix any noticeable spelling or grammar errors.
+ * Make sure every va_start has a va_end.
+ * Check all pointers for validity.
+ Erik Hovland, erik at hovland dot org
+ * Fix json_object_get_boolean to return false for empty string
+ Spotted by Vitaly Kruglikov, Vitaly dot Kruglikov at palm dot com
+ * optimizations to json_tokener_parse_ex(), printbuf_memappend()
+ Brent Miller, bdmiller at yahoo dash inc dot com
+ * Disable REFCOUNT_DEBUG by default in json_object.c
+ * Don't use this as a variable, so we can compile with a C++ compiler
+ * Add casts from void* to type of assignment when using malloc
+ * Add #ifdef __cplusplus guards to all of the headers
+ * Add typedefs for json_object, json_tokener, array_list, printbuf, lh_table
+ Michael Clark, <michael@metaparadigm.com>
+ * Null pointer dereference fix. Fix json_object_get_boolean strlen test
+ to not return TRUE for zero length string. Remove redundant includes.
+ Erik Hovland, erik at hovland dot org
+ * Fixed warning reported by adding -Wstrict-prototypes
+ -Wold-style-definition to the compilatin flags.
+ Dotan Barak, dotanba at gmail dot com
+ * Add const correctness to public interfaces
+ Gerard Krol, g dot c dot krol at student dot tudelft dot nl
+
+0.8
+ * Add va_end for every va_start
+ Dotan Barak, dotanba at gmail dot com
+ * Add macros to enable compiling out debug code
+ Geoffrey Young, geoff at modperlcookbook dot org
+ * Fix bug with use of capital E in numbers with exponents
+ Mateusz Loskot, mateusz at loskot dot net
+ * Add stddef.h include
+ * Patch allows for json-c compile with -Werror and not fail due to
+ -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations
+ Geoffrey Young, geoff at modperlcookbook dot org
+
+0.7
+ * Add escaping of backslash to json output
+ * Add escaping of foward slash on tokenizing and output
+ * Changes to internal tokenizer from using recursion to
+ using a depth state structure to allow incremental parsing
+
+0.6
+ * Fix bug in escaping of control characters
+ Johan Bj�rklund, johbjo09 at kth dot se
+ * Remove include "config.h" from headers (should only
+ be included from .c files)
+ Michael Clark <michael@metaparadigm.com>
+
+0.5
+ * Make headers C++ compatible by change *this to *obj
+ * Add ifdef C++ extern "C" to headers
+ * Use simpler definition of min and max in bits.h
+ Larry Lansing, llansing at fuzzynerd dot com
+
+ * Remove automake 1.6 requirement
+ * Move autogen commands into autogen.sh. Update README
+ * Remove error pointer special case for Windows
+ * Change license from LGPL to MIT
+ Michael Clark <michael@metaparadigm.com>
+
+0.4
+ * Fix additional error case in object parsing
+ * Add back sign reversal in nested object parse as error pointer
+ value is negative, while error value is positive.
+ Michael Clark <michael@metaparadigm.com>
+
+0.3
+ * fix pointer arithmetic bug for error pointer check in is_error() macro
+ * fix type passed to printbuf_memappend in json_tokener
+ * update autotools bootstrap instructions in README
+ Michael Clark <michael@metaparadigm.com>
+
+0.2
+ * printbuf.c - C. Watford (christopher.watford@gmail.com)
+ Added a Win32/Win64 compliant implementation of vasprintf
+ * debug.c - C. Watford (christopher.watford@gmail.com)
+ Removed usage of vsyslog on Win32/Win64 systems, needs to be handled
+ by a configure script
+ * json_object.c - C. Watford (christopher.watford@gmail.com)
+ Added scope operator to wrap usage of json_object_object_foreach, this
+ needs to be rethought to be more ANSI C friendly
+ * json_object.h - C. Watford (christopher.watford@gmail.com)
+ Added Microsoft C friendly version of json_object_object_foreach
+ * json_tokener.c - C. Watford (christopher.watford@gmail.com)
+ Added a Win32/Win64 compliant implementation of strndup
+ * json_util.c - C. Watford (christopher.watford@gmail.com)
+ Added cast and mask to suffice size_t v. unsigned int conversion
+ correctness
+ * json_tokener.c - sign reversal issue on error info for nested object parse
+ spotted by Johan Bj�rklund (johbjo09 at kth.se)
+ * json_object.c - escape " in json_escape_str
+ * Change to automake and libtool to build shared and static library
+ Michael Clark <michael@metaparadigm.com>
+
+0.1
+ * initial release
Oops, something went wrong.

0 comments on commit ec2dba1

Please sign in to comment.