Sha256: ac0283cab915868f2fdb287bcc2854dd7486f8df2f4eb7d67f3c6cd5436db678

Contents?: true

Size: 1.1 KB

Versions: 3

Compression:

Stored size: 1.1 KB

Contents

# encoding: utf-8

require 'one_apm/transaction/sample_buffer/transaction_sample_buffer'

module OneApm
  class Transaction
    class CrossSampleBuffer < TransactionSampleBuffer

      def initialize(events)
        @counter = 0
        @samples = []
        @events = events
      end

      def capacity
        Manager.config[:cross_sampler_count]
      end

      def reset_counter!
        @counter = 0
      end

      def full?
        @counter >= capacity
      end

      def allow_sample?(sample)
        sample.params[:custom_params][:'bw.trip_id'] rescue false
      end

      private

      # If a buffer needs to modify an added sample, override this method.
      # Bounds checking, allowing samples and truncation belongs elsewhere.
      def add_sample(sample)
        if full?
          OneApm::Manager.logger.debug "Cross sample buffer is full, counter: #{@counter} "
        else
          @counter += 1
          OneApm::Manager.logger.debug "Cross sample buffer add sample, counter: #{@counter} "
          @events.notify(:cross_sample_buffer_added, sample)
        end
      end

    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
oneapm_rpm-1.4.2 lib/one_apm/transaction/sample_buffer/cross_sample_buffer.rb
oneapm_rpm-1.4.1 lib/one_apm/transaction/sample_buffer/cross_sample_buffer.rb
oneapm_rpm-1.4.0 lib/one_apm/transaction/sample_buffer/cross_sample_buffer.rb