lib/measures/client.rb in measures-0.1.0 vs lib/measures/client.rb in measures-1.0.0

- old
+ new

@@ -1,24 +1,42 @@ require "socket" require "json" +require "benchmark" module Measures class Client def initialize(client, host, port) @client = client @socket = UDPSocket.new @socket.connect(host, port) end def count(metric, data = {}) - message = { + data.merge!({ "count" => 1 }) + + send(metric, data) + end + + def time(metric, data = {}, &block) + elapsed_time = Benchmark.realtime do + yield if block_given? + end + + data.merge!({ "time" => elapsed_time }) + + send(metric, data) + end + + private + + def send(metric, data = {}) + default = { "client" => @client, "metric" => metric, - "count" => 1, } - data = data.merge(message) + default.merge!(data) - @socket.send(data.to_json, 0) + @socket.send(default.to_json, 0) end end end