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