Class: SplitIoClient::Cache::Repositories::Impressions::MemoryRepository

Inherits:
SplitIoClient::Cache::Repositories::ImpressionsRepository show all
Defined in:
lib/splitclient-rb/cache/repositories/impressions/memory_repository.rb

Instance Method Summary collapse

Methods inherited from SplitIoClient::Cache::Repository

#set_string, #string

Constructor Details

#initialize(config) ⇒ MemoryRepository

Returns a new instance of MemoryRepository.



8
9
10
11
# File 'lib/splitclient-rb/cache/repositories/impressions/memory_repository.rb', line 8

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

Instance Method Details

#add_bulk(impressions) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
# File 'lib/splitclient-rb/cache/repositories/impressions/memory_repository.rb', line 13

def add_bulk(impressions)
  impressions.each do |impression|
    @adapter.add_to_queue(impression)
  end
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
end

#batchObject



25
26
27
28
29
# File 'lib/splitclient-rb/cache/repositories/impressions/memory_repository.rb', line 25

def batch
  return [] if @config.impressions_bulk_size.zero?

  @adapter.get_batch(@config.impressions_bulk_size)
end

#clearObject



31
32
33
# File 'lib/splitclient-rb/cache/repositories/impressions/memory_repository.rb', line 31

def clear
  @adapter.clear
end

#empty?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/splitclient-rb/cache/repositories/impressions/memory_repository.rb', line 35

def empty?
  @adapter.empty?
end