class SplitIoClient::Cache::Repositories::Impressions::MemoryRepository

def add_bulk(impressions)

def add_bulk(impressions)
  return 0 if impressions.nil?
  count = 0
  impressions.each do |impression|
    @adapter.add_to_queue(impression)
    count += 1
  end
  0
rescue ThreadError # queue is full
  if random_sampler.rand(1..1000) <= 2 # log only 0.2 % of the time
    @config.logger.warn("Dropping impressions. Current size is \
      #{@config.impressions_queue_size}. " \
      'Consider increasing impressions_queue_size')
  end
  impressions.length - count
end

def batch

def batch
  return [] if @config.impressions_bulk_size.zero?
  @adapter.get_batch(@config.impressions_bulk_size)
end

def clear

def clear
  @adapter.clear
end

def empty?

def empty?
  @adapter.empty?
end

def initialize(config)

def initialize(config)
  @config = config
  @adapter = @config.impressions_adapter
end

def random_sampler

def random_sampler
  @random_sampler ||= Random.new
end