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(matching_key, bucketing_key, split_name, treatment, time) ⇒ Object

Store impression data in the selected adapter



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 14

def add(matching_key, bucketing_key, split_name, treatment, time)
  @adapter.add_to_queue(
    m: ,
    i: impression_data(
      matching_key,
      bucketing_key,
      split_name,
      treatment,
      time
    )
  )
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

#add_bulk(key, bucketing_key, treatments, time) ⇒ Object



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

def add_bulk(key, bucketing_key, treatments, time)
  treatments.each do |split_name, treatment|
    add(key, bucketing_key, split_name, treatment, time)
  end
end

#batchObject



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

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

  @adapter.get_batch(@config.impressions_bulk_size)
end

#clearObject



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

def clear
  @adapter.clear
end

#empty?Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/splitclient-rb/cache/repositories/impressions/memory_repository.rb', line 49

def empty?
  @adapter.empty?
end