Class: AmplitudeExperiment::InMemoryFlagConfigCache

Inherits:
Object
  • Object
show all
Defined in:
lib/experiment/local/cache.rb

Overview

InMemoryFlagConfigCache The place to store the flag configs fetched from the server

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(flag_configs = {}) ⇒ InMemoryFlagConfigCache

Returns a new instance of InMemoryFlagConfigCache.



10
11
12
13
# File 'lib/experiment/local/cache.rb', line 10

def initialize(flag_configs = {})
  @semaphore = Mutex.new
  @cache = flag_configs
end

Instance Attribute Details

#cacheObject

Returns the value of attribute cache.



8
9
10
# File 'lib/experiment/local/cache.rb', line 8

def cache
  @cache
end

Instance Method Details

#cachesObject



21
22
23
24
25
# File 'lib/experiment/local/cache.rb', line 21

def caches
  @semaphore.synchronize do
    @cache
  end
end

#clearObject



47
48
49
50
51
# File 'lib/experiment/local/cache.rb', line 47

def clear
  @semaphore.synchronize do
    @cache = {}
  end
end

#delete(flag_key) ⇒ Object



41
42
43
44
45
# File 'lib/experiment/local/cache.rb', line 41

def delete(flag_key)
  @semaphore.synchronize do
    @cache.delete(flag_key)
  end
end

#get(flag_key) ⇒ Object



15
16
17
18
19
# File 'lib/experiment/local/cache.rb', line 15

def get(flag_key)
  @semaphore.synchronize do
    @cache.fetch(flag_key, nil)
  end
end

#put(flag_key, flag_config) ⇒ Object



27
28
29
30
31
# File 'lib/experiment/local/cache.rb', line 27

def put(flag_key, flag_config)
  @semaphore.synchronize do
    @cache.store(flag_key, flag_config.clone)
  end
end

#put_all(flag_configs) ⇒ Object



33
34
35
36
37
38
39
# File 'lib/experiment/local/cache.rb', line 33

def put_all(flag_configs)
  @semaphore.synchronize do
    flag_configs.each do |key, value|
      @cache.store(key, value.clone) if value
    end
  end
end