class Jaeger::Reporters::RemoteReporter

Public Class Methods

new(sender:, flush_interval:) click to toggle source
# File lib/jaeger/reporters/remote_reporter.rb, line 8
def initialize(sender:, flush_interval:)
  @sender = sender
  @flush_interval = flush_interval
  @buffer = Buffer.new
end

Public Instance Methods

flush() click to toggle source
# File lib/jaeger/reporters/remote_reporter.rb, line 14
def flush
  spans = @buffer.retrieve
  @sender.send_spans(spans) if spans.any?
  spans
end
report(span) click to toggle source
# File lib/jaeger/reporters/remote_reporter.rb, line 20
def report(span)
  return if !span.context.sampled? && !span.context.debug?

  init_reporter_thread
  @buffer << span
end

Private Instance Methods

init_reporter_thread() click to toggle source
# File lib/jaeger/reporters/remote_reporter.rb, line 29
def init_reporter_thread
  return if @initializer_pid == Process.pid

  @initializer_pid = Process.pid
  Thread.new do
    loop do
      flush
      sleep(@flush_interval)
    end
  end
end