Class: Trevosdk::ExposureDeduper
- Inherits:
-
Object
- Object
- Trevosdk::ExposureDeduper
- Defined in:
- lib/trevosdk/core.rb
Overview
Dedup semantics are corpus-frozen; the eviction strategy under memory pressure is not.
Instance Method Summary collapse
- #clear ⇒ Object
-
#initialize(max_keys = Core::EXPOSURE_DEDUP_MAX_KEYS) ⇒ ExposureDeduper
constructor
A new instance of ExposureDeduper.
- #should_log?(identity, experiment_key, variant_name, now_ms) ⇒ Boolean
Constructor Details
#initialize(max_keys = Core::EXPOSURE_DEDUP_MAX_KEYS) ⇒ ExposureDeduper
Returns a new instance of ExposureDeduper.
136 137 138 139 |
# File 'lib/trevosdk/core.rb', line 136 def initialize(max_keys = Core::EXPOSURE_DEDUP_MAX_KEYS) @seen = {} @max_keys = max_keys end |
Instance Method Details
#clear ⇒ Object
155 156 157 |
# File 'lib/trevosdk/core.rb', line 155 def clear @seen.clear end |
#should_log?(identity, experiment_key, variant_name, now_ms) ⇒ Boolean
141 142 143 144 145 146 147 148 149 150 151 152 153 |
# File 'lib/trevosdk/core.rb', line 141 def should_log?(identity, experiment_key, variant_name, now_ms) if @seen.length >= @max_keys @seen.delete_if { |_, ts| now_ms - ts >= Core::EXPOSURE_DEDUP_WINDOW_MS } @seen.clear if @seen.length >= @max_keys end key = "#{identity}:#{experiment_key}:#{variant_name}" last = @seen[key] return false if !last.nil? && now_ms - last < Core::EXPOSURE_DEDUP_WINDOW_MS @seen[key] = now_ms true end |