class TingYun::Agent::Collector::TransactionSampler::TransactionSampleBufferBase
Constants
- NO_SAMPLES
- SINGLE_BUFFER_MAX
Public Class Methods
new()
click to toggle source
# File lib/ting_yun/agent/collector/transaction_sampler/transaction_sample_buffer_base.rb, line 13 def initialize @samples = [] end
Public Instance Methods
allow_sample?(sample)
click to toggle source
If a buffer needs to modify, override this method.
# File lib/ting_yun/agent/collector/transaction_sampler/transaction_sample_buffer_base.rb, line 18 def allow_sample?(sample) true end
capacity()
click to toggle source
Capacity is the desired number of samples a buffer will hold. This can be user dictated via config if a feature wants.
This value will be forcibly capped by the max_capacity
# File lib/ting_yun/agent/collector/transaction_sampler/transaction_sample_buffer_base.rb, line 79 def capacity raise NotImplementedError.new("TransactionSampleBufferBase subclasses must provide a capacity override") end
enabled?()
click to toggle source
If a buffer needs to modify, override this method.
# File lib/ting_yun/agent/collector/transaction_sampler/transaction_sample_buffer_base.rb, line 23 def enabled? true end
full?()
click to toggle source
# File lib/ting_yun/agent/collector/transaction_sampler/transaction_sample_buffer_base.rb, line 70 def full? @samples.length >= max_capacity end
harvest_samples()
click to toggle source
# File lib/ting_yun/agent/collector/transaction_sampler/transaction_sample_buffer_base.rb, line 31 def harvest_samples @samples ensure reset! end
max_capacity()
click to toggle source
# File lib/ting_yun/agent/collector/transaction_sampler/transaction_sample_buffer_base.rb, line 83 def max_capacity capacity > SINGLE_BUFFER_MAX ? SINGLE_BUFFER_MAX : capacity end
reset!()
click to toggle source
# File lib/ting_yun/agent/collector/transaction_sampler/transaction_sample_buffer_base.rb, line 27 def reset! @samples = [] end
store(sample)
click to toggle source
# File lib/ting_yun/agent/collector/transaction_sampler/transaction_sample_buffer_base.rb, line 45 def store(sample) return unless enabled? add_sample(sample) end
storeV2(sample)
click to toggle source
# File lib/ting_yun/agent/collector/transaction_sampler/transaction_sample_buffer_base.rb, line 37 def storeV2(sample) return unless enabled? if allow_sample?(sample) add_sample(sample) truncate_samples_if_needed end end
store_previous(previous_samples)
click to toggle source
# File lib/ting_yun/agent/collector/transaction_sampler/transaction_sample_buffer_base.rb, line 58 def store_previous(previous_samples) return unless enabled? previous_samples.each do |sample| add_sample(sample) end end
store_previousV2(previous_samples)
click to toggle source
# File lib/ting_yun/agent/collector/transaction_sampler/transaction_sample_buffer_base.rb, line 50 def store_previousV2(previous_samples) return unless enabled? previous_samples.each do |sample| add_sample(sample) if allow_sample?(sample) end truncate_samples_if_needed end
truncate_samples()
click to toggle source
Our default truncation strategy is to keep max_capacity
worth of the longest samples. Override this method for alternate behavior.
# File lib/ting_yun/agent/collector/transaction_sampler/transaction_sample_buffer_base.rb, line 90 def truncate_samples @samples.sort!{|a,b| a.duration <=> b.duration} @samples.slice!(0..-(max_capacity + 1)) end
truncate_samples_if_needed()
click to toggle source
# File lib/ting_yun/agent/collector/transaction_sampler/transaction_sample_buffer_base.rb, line 66 def truncate_samples_if_needed truncate_samples if full? end
Private Instance Methods
add_sample(sample)
click to toggle source
If a buffer needs to modify an added sample, override this method. Bounds checking, allowing samples and truncation belongs elsewhere.
# File lib/ting_yun/agent/collector/transaction_sampler/transaction_sample_buffer_base.rb, line 100 def add_sample(sample) @samples << sample end