Class: SplitIoClient::Cache::Repositories::Impressions::MemoryRepository
- Inherits:
-
SplitIoClient::Cache::Repositories::ImpressionsRepository
- Object
- SplitIoClient::Cache::Repository
- SplitIoClient::Cache::Repositories::ImpressionsRepository
- SplitIoClient::Cache::Repositories::Impressions::MemoryRepository
- Defined in:
- lib/splitclient-rb/cache/repositories/impressions/memory_repository.rb
Instance Method Summary collapse
-
#add(matching_key, bucketing_key, split_name, treatment, time) ⇒ Object
Store impression data in the selected adapter.
- #add_bulk(key, bucketing_key, treatments, time) ⇒ Object
- #batch ⇒ Object
-
#initialize(adapter) ⇒ MemoryRepository
constructor
A new instance of MemoryRepository.
Methods inherited from SplitIoClient::Cache::Repository
Constructor Details
#initialize(adapter) ⇒ MemoryRepository
Returns a new instance of MemoryRepository.
8 9 10 |
# File 'lib/splitclient-rb/cache/repositories/impressions/memory_repository.rb', line 8 def initialize(adapter) @adapter = adapter end |
Instance Method Details
#add(matching_key, bucketing_key, split_name, treatment, time) ⇒ Object
Store impression data in the selected adapter
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/splitclient-rb/cache/repositories/impressions/memory_repository.rb', line 13 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 SplitIoClient.configuration.logger.warn("Dropping impressions. Current size is \ #{SplitIoClient.configuration.impressions_queue_size}. " \ 'Consider increasing impressions_queue_size') end end |
#add_bulk(key, bucketing_key, treatments, time) ⇒ Object
32 33 34 35 36 |
# File 'lib/splitclient-rb/cache/repositories/impressions/memory_repository.rb', line 32 def add_bulk(key, bucketing_key, treatments, time) treatments.each do |split_name, treatment| add(key, bucketing_key, split_name, treatment, time) end end |
#batch ⇒ Object
38 39 40 41 42 |
# File 'lib/splitclient-rb/cache/repositories/impressions/memory_repository.rb', line 38 def batch return [] if SplitIoClient.configuration.impressions_bulk_size.zero? @adapter.get_batch(SplitIoClient.configuration.impressions_bulk_size) end |