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