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
24
25
26
27
28
29
30
31
# File 'lib/splitclient-rb/cache/repositories/impressions/memory_repository.rb', line 13

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

#batchObject



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

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

  @adapter.get_batch(@config.impressions_bulk_size)
end

#clearObject



39
40
41
# File 'lib/splitclient-rb/cache/repositories/impressions/memory_repository.rb', line 39

def clear
  @adapter.clear
end

#empty?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/splitclient-rb/cache/repositories/impressions/memory_repository.rb', line 43

def empty?
  @adapter.empty?
end