From a40e52279334189db8cee25530ad80172572f2f9 Mon Sep 17 00:00:00 2001 From: Viresh A S Date: Tue, 26 Mar 2013 12:03:37 +0530 Subject: [PATCH] adding statsd:mgmt_server interface to the gem --- lib/mgmt_server.rb | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 lib/mgmt_server.rb diff --git a/lib/mgmt_server.rb b/lib/mgmt_server.rb new file mode 100644 index 0000000..ffa2ab1 --- /dev/null +++ b/lib/mgmt_server.rb @@ -0,0 +1,41 @@ +require 'socket' + +class Statsd + class MgmtServer + + METHODS_ALLOWED = ["counters", "timers", "gauges", "sets"] + + def initialize(host="localhost", port=8126) + @host = host + @port = port + end + + def request_server(stat) + @mgmt_server ||= TCPSocket.new(@host, @port) + @mgmt_server.puts stat + parse_response + end + + def parse_response + #return if @parsing_stats + #@parsing_stats = true + + response = @mgmt_server.gets.strip + #return ERROR if statsd returns error + return "ERROR" if ( response == "ERROR" ) + + #concatenate the data to a string and return + #statsd returns END on completion + while( (l = @mgmt_server.gets.strip) != "END") + response += l + end + #@parsing_stats = false + response + end + + def method_missing(m, *args) + raise NoMethodError if !(METHODS_ALLOWED.include?(m.to_s)) + Statsd::MgmtServer.new.send(:request_server, m.to_sym) + end + end +end