Class: SplitIoClient::Observers::ImpressionObserver

Inherits:
Object
  • Object
show all
Defined in:
lib/splitclient-rb/cache/observers/impression_observer.rb

Constant Summary collapse

LAST_SEEN_CACHE_SIZE =
500000

Instance Method Summary collapse

Constructor Details

#initializeImpressionObserver

Returns a new instance of ImpressionObserver.



6
7
8
9
# File 'lib/splitclient-rb/cache/observers/impression_observer.rb', line 6

def initialize
  @cache = LruRedux::TTL::ThreadSafeCache.new(LAST_SEEN_CACHE_SIZE)
  @impression_hasher = Hashers::ImpressionHasher.new
end

Instance Method Details

#test_and_set(impression) ⇒ Object



11
12
13
14
15
16
17
18
19
# File 'lib/splitclient-rb/cache/observers/impression_observer.rb', line 11

def test_and_set(impression)
  return if impression.nil?
  
  hash = @impression_hasher.process(impression)
  previous = @cache[hash]
  @cache[hash] = impression[:m]

  previous.nil? ? nil : [previous, impression[:m]].min
end