lib/elastic_apm/agent.rb in elastic-apm-0.2.0 vs lib/elastic_apm/agent.rb in elastic-apm-0.3.0

- old
+ new

@@ -26,11 +26,12 @@ def self.start(config) return @instance if @instance LOCK.synchronize do return @instance if @instance - @instance = new(config).start + + @instance = new(config.freeze).start end end def self.stop LOCK.synchronize do @@ -43,15 +44,17 @@ def self.running? !!@instance end + # rubocop:disable Metrics/MethodLength def initialize(config) config = Config.new(config) if config.is_a?(Hash) @config = config + @http = Http.new(config) @queue = Queue.new @instrumenter = Instrumenter.new(config, self) @context_builder = ContextBuilder.new(config) @error_builder = ErrorBuilder.new(config) @@ -59,12 +62,13 @@ @serializers = Struct.new(:transactions, :errors).new( Serializers::Transactions.new(config), Serializers::Errors.new(config) ) end + # rubocop:enable Metrics/MethodLength - attr_reader :config, :queue, :instrumenter, :context_builder + attr_reader :config, :queue, :instrumenter, :context_builder, :http def start debug 'Starting agent reporting to %s', config.server_url @instrumenter.start @@ -148,20 +152,28 @@ def set_custom_context(*args) instrumenter.set_custom_context(*args) end + def set_user(*args) + instrumenter.set_user(*args) + end + + def add_filter(key, callback) + @http.filters.add(key, callback) + end + def inspect '<ElasticAPM::Agent>' end private def boot_worker debug 'Booting worker in thread' @worker_thread = Thread.new do - Worker.new(@config, @queue).run_forever + Worker.new(@config, @queue, @http).run_forever end end def kill_worker @queue << Worker::StopMessage.new