Sha256: 515804eb1841c0066a7713c3d7c5b9c5fe187ec2cd1e3b0c1d5654c0c003087c

Contents?: true

Size: 845 Bytes

Versions: 7

Compression:

Stored size: 845 Bytes

Contents

# frozen_string_literal: true

require_relative './remote_reporter/buffer'

module Jaeger
  module Reporters
    class RemoteReporter
      def initialize(sender:, flush_interval:)
        @sender = sender
        @flush_interval = flush_interval
        @buffer = Buffer.new
      end

      def flush
        spans = @buffer.retrieve
        @sender.send_spans(spans) if spans.any?
        spans
      end

      def report(span)
        return if !span.context.sampled? && !span.context.debug?

        init_reporter_thread
        @buffer << span
      end

      private

      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
    end
  end
end

Version data entries

7 entries across 7 versions & 3 rubygems

Version Path
dox-jaeger-client-2.0.0 lib/jaeger/reporters/remote_reporter.rb
jaeger-client-with-ruby-32-support-2.0.0 lib/jaeger/reporters/remote_reporter.rb
jaeger-client-1.3.0 lib/jaeger/reporters/remote_reporter.rb
jaeger-client-1.2.0 lib/jaeger/reporters/remote_reporter.rb
jaeger-client-1.1.0 lib/jaeger/reporters/remote_reporter.rb
jaeger-client-1.0.0 lib/jaeger/reporters/remote_reporter.rb
jaeger-client-0.10.0 lib/jaeger/reporters/remote_reporter.rb