diff --git a/CHANGELOG.md b/CHANGELOG.md index a22316a..d75db05 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +# feature/single_socket + * Use a single UDP Socket + # 0.0.2 * BUGFIX: Log location relative to `Adhearsion.root` diff --git a/adhearsion-stats.gemspec b/adhearsion-stats.gemspec index 7ff624d..06682cf 100644 --- a/adhearsion-stats.gemspec +++ b/adhearsion-stats.gemspec @@ -19,7 +19,7 @@ Gem::Specification.new do |s| s.require_paths = ["lib"] s.add_runtime_dependency %q, ["~> 2.1"] - s.add_runtime_dependency %q + s.add_runtime_dependency %q s.add_development_dependency %q, ['>= 0'] s.add_development_dependency %q, ["~> 1.0"] diff --git a/lib/adhearsion-stats.rb b/lib/adhearsion-stats.rb index 4bd1c4f..82cc111 100644 --- a/lib/adhearsion-stats.rb +++ b/lib/adhearsion-stats.rb @@ -1,5 +1,6 @@ module AdhearsionStats; end require "adhearsion-stats/version" +require "adhearsion-stats/stactor" require "adhearsion-stats/metrics_logger" require "adhearsion-stats/plugin" diff --git a/lib/adhearsion-stats/plugin.rb b/lib/adhearsion-stats/plugin.rb index 6829383..25cae1c 100644 --- a/lib/adhearsion-stats/plugin.rb +++ b/lib/adhearsion-stats/plugin.rb @@ -17,9 +17,10 @@ class Plugin < Adhearsion::Plugin init :statsd do AdhearsionStats.setup_logger if Adhearsion.config.statsd.log_metrics - AdhearsionStats.statsd = Statsd.new Adhearsion.config.statsd.host, Adhearsion.config.statsd.port - AdhearsionStats.loaded = true + statsd = Statsd.new Adhearsion.config.statsd.host, Adhearsion.config.statsd.port, UDPSocket.new + AdhearsionStats.statsd = AdhearsionStats::Stactor.new statsd + AdhearsionStats.loaded = true logger.info "Adhearsion-Stats has been loaded" end end diff --git a/lib/adhearsion-stats/stactor.rb b/lib/adhearsion-stats/stactor.rb new file mode 100644 index 0000000..f829ff7 --- /dev/null +++ b/lib/adhearsion-stats/stactor.rb @@ -0,0 +1,19 @@ +module AdhearsionStats + class Stactor + include Celluloid + + attr_accessor :statsd + + def initialize(statsd) + @statsd = statsd + end + + def send_stat(meth, *args, &blk) + statsd.send meth, *args, &blk + end + + def method_missing(meth, *args, &blk) + self.async.send_stat meth, *args, &blk + end + end +end diff --git a/spec/adhearsion-stats/plugin_spec.rb b/spec/adhearsion-stats/plugin_spec.rb index f7225b8..d8d0893 100644 --- a/spec/adhearsion-stats/plugin_spec.rb +++ b/spec/adhearsion-stats/plugin_spec.rb @@ -22,9 +22,10 @@ end it "sets init variables" do - subject.statsd.should be_an_instance_of Statsd - subject.statsd.host.should == "127.0.0.1" - subject.statsd.port.should == 8125 + subject.statsd.should be_an_instance_of AdhearsionStats::Stactor + subject.statsd.statsd.should be_an_instance_of Statsd + subject.statsd.statsd.host.should == "127.0.0.1" + subject.statsd.statsd.port.should == 8125 subject.metrics_logger.should be_an_instance_of AdhearsionStats::MetricsLogger subject.loaded.should be_true