Sha256: c9acf2ac7ea31c611a82029d2fbc4ddbcbd6799c1003e5274249f43d96efc917

Contents?: true

Size: 768 Bytes

Versions: 2

Compression:

Stored size: 768 Bytes

Contents

# frozen_string_literal: true

require 'thread'

require_relative './async_reporter/buffer'

module Jaeger
  module Client
    class AsyncReporter
      def self.create(sender:, flush_interval:)
        reporter = new(sender)

        # start flush thread
        Thread.new do
          loop do
            reporter.flush
            sleep(flush_interval)
          end
        end

        reporter
      end

      def initialize(sender)
        @sender = sender
        @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?
        @buffer << span
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
jaeger-client-0.7.1 lib/jaeger/client/async_reporter.rb
jaeger-client-0.7.0 lib/jaeger/client/async_reporter.rb